Qt4.7を使用してQTableWidgetでmouseTrackingを有効にしたいとします。通常、これはsetMouseTracking(真)を使って真っ直ぐに進むべきです。これは他のウィジェットでも機能しましたが、QTableWidgetはそれに抵抗します。 mouseTrackingを有効にするために何か特別なことはありますか?Qt MouseTracking in QTableWidget
私は実際にはより複雑なものをやっていますが、mouseMoveEventのQMouseEvent.x()を印刷することで有効にならないという自信を得ることができます。 おかげでここでは、これまで:)
は、私が試したものです:
QGridLayout * layout = new QGridLayout(this);
SCTableWidget * aTable = new SCTableWidget(tableRows, tableCols, this);
QTableWidgetItem * newItem;
for(int i = 0; i<(3); i++) {
for(int j = 0; j<(17); j++) {
newItem = new QTableWidgetItem(QString::number(tableData[i][j]));
aTable->setItem(i,j, newItem);
}
}
// First try
aTable->setMouseTracking(true);
//Second try. Main Window further down.
MainWindow::instance->enableMouseTracking(aTable->children());
MainWindow::instance->enableMouseTracking(aTable->viewport()->children());
// Third try
aTable->viewport()->setMouseTracking(true);
layout->addWidget(aTable, 0, 0, 1, 2);
2回目の試行は、次のようになりますメインウィンドウに実装されているメソッドが含まれます。
void
MainWindow::enableMouseTracking(const QObjectList & pChildren)
{
foreach(QObject * obj, pChildren)
{
QWidget * w = qobject_cast<QWidget *>(obj);
if(w)
{
w->setMouseTracking(true);
enableMouseTracking(w->children());
}
}
}
+1を。 – Jichao