Я хочу включить mouseTracking в QTableWidget, используя Qt4.7.Обычно это должно быть прямым с setMouseTracking (true).Это работало на других виджетах, но QTableWidget сопротивляется этому.Есть ли что-то особенное, с чем я должен иметь дело, чтобы активировать mouseTracking?
Хотя я на самом деле делаю более сложные вещи, я мог бы обрести уверенность в том, что это не включено, распечатав QMouseEvent.x () в mouseMoveEvent.пока спасибо:)
Вот что я пробовал:
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);
Вторая попытка содержит метод, который реализован в MainWindow и выглядит так:
void
MainWindow::enableMouseTracking(const QObjectList & pChildren)
{
foreach(QObject * obj, pChildren)
{
QWidget * w = qobject_cast<QWidget *>(obj);
if(w)
{
w->setMouseTracking(true);
enableMouseTracking(w->children());
}
}
}