1

QTableWidget(resultTable)にポップアップ メニューがあります。クラスのコンストラクターで、コンテキスト メニュー ポリシーを設定します。

resultTable->setContextMenuPolicy(Qt::CustomContextMenu);
connect(resultTable, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(popUpMenuResultTable(QPoint)));

popUpMenuResultTable機能:

void MyClass::popUpMenuResultTable(QPoint pos)
{
    QMenu menu;
    QAction* actionExport = menu.addAction(QIcon(":/new/prefix1/FileIcon.png"), tr("Export"));
    connect(actionExport, SIGNAL(triggered()), this, SLOT(exportResultsTable()));
    menu.popup(pos);
    menu.exec(QCursor::pos());
}

ここで、 QtTest ライブラリを使用して GUI をテストする関数を実装する必要があります。

resultTableを右クリックして、ユーザーと同じ結果を得るにはどうすればよいですか? actionExport基本的に、 ( )にアクセスしてQActionトリガーする必要があります。

例えば:

ここに画像の説明を入力

私はすでに試しました:

QTest::mouseClick(resultTable, Qt::RightButton, Qt::NoModifier, pos, delay);

しかし、それは表示されませんQMenu

Qt 5.3.2 を使用しています。

4

1 に答える 1

1

完全にあなたが求めているものではないかもしれませんが、テストしやすい代替アプローチです。

メニューを手動で作成する代わりに、アクションをウィジェットに登録して以下を使用しますQt::ActionContextMenu

// e.g. in the widget's constructor
resultTable->setContextMenuPolicy(Qt::ActionsContextMenu);

QAction* actionExport = menu.addAction(QIcon(":/new/prefix1/FileIcon.png"), tr("Export"));
connect(actionExport, SIGNAL(triggered()), this, SLOT(exportResultsTable()));
resultTable->addAction(actionExport);

次に、返すウィジェットにアクセサを追加するか、resultTable->actions()単にactionExportクラスのメンバーを作成します。テスト コードがアクションにアクセスできるようになると、単純にそのトリガーtrigger()メソッドを呼び出すことができます。

于 2016-10-31T17:25:42.443 に答える