Hallo,
ich habe ein QtableWidget und möchte etwas ausführen, nachdem der Mauszeiger 2-3 Sekunden drauf gehalten hatte.
Das Signal habe ich so connected:
connect(tableWidget, SIGNAL(itemEntered(QTableWidgetItem*)), this, SLOT(testslot()));
Da ist es aber leider nicht verzögert. Geht das überhaupt?
verzögertes Signal
-
Superheftig
- Beiträge: 63
- Registriert: 6. September 2008 15:20
kannst nen timer dazwischen schalten
QTimer::singleShot zum Beispiel.
machst dir nen slot das singal von dem table widget connectest du mit dem slot. In dem Slot startest du den timer und connectest das singal mit dem slot der verzögert ausgeführt werden soll.
QTimer::singleShot zum Beispiel.
machst dir nen slot das singal von dem table widget connectest du mit dem slot. In dem Slot startest du den timer und connectest das singal mit dem slot der verzögert ausgeführt werden soll.
Code: Alles auswählen
public slot:
void meinVerzögerterSlot() {
QTimer::singleShot(3000, this, SLOT(testslot()));
}
connect(tableWidget, SIGNAL(itemEntered(QTableWidgetItem*)), this, SLOT(meinVerzögerterSlot()));
-
Superheftig
- Beiträge: 63
- Registriert: 6. September 2008 15:20
Danke für die Antworten, ich hab es mit einem Eventfilter gelöst:
Code: Alles auswählen
bool mainwindow1::eventFilter(QObject *object, QEvent *event)
{
if (event->type() == QEvent::Enter && object == tableWidget)
{
delaytimer->start(2000);
}
if (event->type() == QEvent::Leave && object == tableWidget)
{
delaytimer->stop();
}
return false;
}