2012-01-24 64 views
2

我已經使用QT Designer創建了一個QMainWindow。我有具有信號插槽的組件。我製作了一些非gui組件QObject,所以我也可以使用信號/插槽機制。將QDialog連接到QMainWindow

我的下一步是添加一個無模式對話框。我不想讓對話框阻止主窗口。我希望對話框保持活動狀態(用戶可以看到或在後臺顯示),直到用戶單擊關閉它。我用設計器創建了一個無模式的QDialog對象。該對話框根據需要彈出。它還將文本框中的前一個會話的信息保存在文本框中。這只是一個文件名。

但是,當我開始將QDialog連接到QMainWindow時,信號/插槽機制似乎不起作用。

這是我的代碼:

//In the .h file declared as member of the QMainWindow 
ScriptDialog *theScriptDialog; 

//In the .cpp file, the constructor of QMainWindow 
theScriptDialog = new ScriptDialog(this); 

QObject::connect(theScriptDialog, SIGNAL(notifyStartScript(QString)), SLOT (startScripting(QString))); 

也許我找錯了樹。有沒有更好的方法來創建這樣的彈出式窗口?

回答

0

首先看看連接是否成功:檢查應用程序控制臺輸出是否有連接失敗的警告,然後打印連接調用的返回值。

那麼一些事情要做:

  • 你有scriptdialog.h的Q_OBJECT宏觀
  • 你記得添加新Q_OBJECT
  • 後運行qmake的加入qDebug打印/斷點到notifyStartScript是發射
  • 將其他連接到startScripting插槽,使用qDebug打印或斷點來驗證它被稱爲
  • 如果你已經使用了源代碼內部構建(就像在源代碼目錄下運行qmake並從命令行創建),然後在單獨的內部目錄中切換到「陰影構建」,確保源代碼目錄清理生成的.cpp文件, .h和.o文件。