我想使用Qt4.7在QTableWidget中啓用mouseTracking。通常這應該是直接與setMouseTracking(true)。這對其他小部件起作用,但QTableWidget抵制它。爲了激活mouseTracking,有什麼特別的我必須處理?QT鼠標跟蹤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);
第二次嘗試包含在主窗口中實現的方法,看起來像這樣:
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 2012-11-28 06:56:25