Seite 1 von 1

QTableView event Rechte Maustaste

Verfasst: 23. Februar 2010 21:58
von MSchuster
Hy @ all,
Sry für die noob Frage aber ich glaub ich bin zu verwöhnt von Delphi.

Wenn ich in Delphi ein clicked event erstelle wird mir automatisch viel mitgeteilt, welches mir in Qt abgeht.

Code: Alles auswählen

void MainWindow::on_tableView_Person_clicked(QModelIndex index)
{
    
}
Möchte hier gerne wissen mit welcher Maustaste geklickt wurde.

Hab hier bissl rumgesucht und in mein schlaues Buch geschaut.
Muß mann nen Ereignisfilter implementieren um das Event abzufangen oder geht das irgendwie anders??
Thx für Antworten

Verfasst: 23. Februar 2010 22:07
von upsala
Wenn du ein Event willst dann nimm das QMouseEvent. Das was du hier hast ist ein Signal.

Verfasst: 28. Februar 2010 23:34
von MSchuster
Hab das ganze jetzt mit einem Eventfilter probiert aber irgendwie gehts noch immer nicht :oops:
Hab das ganze aus nen Buch aber leider bezieht sich das Buch kaum auf den Qt Designer. Ich will eigendlich nur ein Kontexmenü erstellen aber selbst dies scheint mir sehr umständlich zu sein gegenüber in Delphi^^

Code: Alles auswählen

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->tableView_Person->installEventFilter(this);

Code: Alles auswählen

bool MainWindow::eventFilter(QObject *object, QEvent *event)
{
    if (event->type() == QEvent::MouseButtonPress && object == ui->tableView_Person){
        QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
        if (mouseEvent->button()== Qt::RightButton){
            QMessageBox::information(0,"Hallo","Mouse");
            return true;
        }
    }
    return QWidget::eventFilter(object,event);
}
K.a. warum meine Messagebox nie ausgelöst wird kann mir wer nen Tipp geben pls.

Verfasst: 1. März 2010 09:03
von upsala
Bei von QAbstractScrollView abgeleiteten Klassen ist der eventFilter auf den viewport() zu legen.