0

QtでIHMを作成しようとしていますが、基本的なメニュー(File、Edit ...)を作成することから始めました。これまでのところ、「ファイル」を含むメニューがあり、「新しいプロジェクト、プロジェクトを開く、終了」が表示されます。見栄えは良いですが、私の問題は、これらのアクションをトリガーできないように見えることです(クリックするか、キーショートカットを使用)。

これが私のスロットです:

void KoriganEngine::launchNewProjectWidget(){
   //External QWidget
   m_nwProj = new NewProjectWidget(NULL,Qt::MSWindowsFixedSizeDialogHint);
   m_nwProj->show();
}

押しボタンを接続してこのスロットを使用すると、新しいQWidgetが正しく表示されます。しかし、アクションで同じことをすることは不可能です...

これが私のアクションとメニューのコードです:

    void KoriganEngine::KG_createMenus(){
//init actions
KG_createMenuActions();

//add menu to the bar
m_fileMenu = menuBar()->addMenu("File");
m_fileMenu->addAction(m_newProjAction);
m_fileMenu->addAction(m_openProjAction);
m_fileMenu->addSeparator();
m_fileMenu->addAction(m_quitAction);

m_editMenu = menuBar()->addMenu("Edit");

}

    void KoriganEngine::KG_createMenuActions(){
m_newProjAction = new QAction("New Project...", this);
m_newProjAction->setShortcuts(QKeySequence::New);
m_newProjAction->setStatusTip(QString("Create a new Project"));
connect(m_newProjAction, SIGNAL(trigerred()), this, SLOT(slottest()));

m_openProjAction = new QAction("Open Project...", this);
m_openProjAction->setShortcuts(QKeySequence::Open);
m_openProjAction->activate( QAction::Hover);
connect(m_openProjAction, SIGNAL(trigerred()), this, SLOT(launchNewProjectWidget())); //TODO replace the slots

m_quitAction = new QAction("Exit", this);
connect(m_quitAction, SIGNAL(trigerred()), this, SLOT(quit()));

}

そして、ボタンで動作するコード:

connect(m_button, SIGNAL(clicked()), this, SLOT(launchNewProjectWidget()));

だから私はそれが同じように反応しない理由を本当に理解していません、私はQtの例を何度も読みました...私は何かを逃したに違いありません、しかし誰かがアイデアとして、私はそれは私に人生を憎み始めています:p

皆さん、ありがとうございました。

PS:わかりました、コードブロックビジネスをうまく処理できるかどうかはわかりません。私の防衛では、使用するのは本当に奇妙です...:p

4

2 に答える 2

5

トリガーされた単語を間違えました:P次のようになります:

connect(m_quitAction, SIGNAL(triggered()), this, SLOT(quit()));
                                ------

トリガーされた、トリガーされなかった!:)

于 2012-09-16T15:10:58.753 に答える
0

私がこれを正しく理解した場合、問題はm_openProjAction-> activate(QAction :: Hover);です。これにより、QActionはtriggered()ではなくhovered()を発行します。

于 2012-09-16T15:11:48.647 に答える