2012-09-16 3 views
0

Qt로 IHM을 만들려고하는데 기본 메뉴 (파일, 편집 ...)를 만들어 시작했습니다. 지금까지 "File"을 포함하는 메뉴가 있는데, "New Project, Open Project, Exit"가 표시됩니다. 멋져 보이지만 내 문제는 이러한 동작 (클릭하거나 단축키로 클릭)을 실행할 수없는 것입니다. 내가 연결된 푸시 버튼이 슬롯을 사용하는 경우QAction이 내 슬롯에 연결되지 않습니다.

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

답변

5

당신은 트리거 단어에서 실수를 : P 그것은해야한다 :

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

방아쇠가 아닌 트리거링! :)

+0

감사합니다. 나는 부끄러워서 철자 문제로 몇 시간을 잃었습니다. 어쨌든 고맙습니다. – Crumble

0

이 문제가 발생하면 문제는 m_openProjAction-> activate (QAction :: Hover)입니다. 그러면 QAction이 triggered() 대신 hovered()를 내 보냅니다.

+0

당신이 옳지 않습니다. 이 함수는 단지 신호를 내고 설정하지 않습니다. – Blood

+0

나는 그것을 생각했지만 그것은 문제가 아니었다. 진짜는 위의 설명입니다. 어쨌든 덕분에 – Crumble

+0

예, 오타가 실제 코딩 오류를 찾지 못했기 때문에 근처의 콘솔에서 qt 앱을 실행해야합니다. 어떤 이유로 든 신호 또는 슬롯을 연결할 수 없을 때 경고가 표시됩니다. – xception