2010-06-04 49 views
2

我正在爲我的C++程序使用QT4我想在自己的窗口打開時自動啓用信號,所以請告訴我如何在打開程序窗口時啓用信號。如何自動啓用我的程序窗口上的信號打開

我是QT新手,請詳細說明。

感謝

+5

你是什麼意思 「使信號」?用QObject :: blockSignals()成員發出或連接或取消阻塞之前被阻止的信號?無論你想要做什麼,你應該覆蓋Widget :: showEvent()在你的窗口顯示時執行某些操作。 – 2010-06-04 08:12:59

回答

1

您可以重寫公共職能顯示在你的類,例如:

mainwindow.h

class MainWindow : public QMainWindow { 
    Q_OBJECT; 
public: 
    MainWindow(); 

    void myShow() { 
     activateWindow(); 
     show(); 
     emit mySignalFunc(); 
    } 
signals: 
    void mySignalFunc() { 
     qDebug() << "Here is my signal!!!"; 
    }; 
}; 

的main.cpp在main()函數:

MainWindow wnd; 
wnd.myShow(); 

祝你好運!

+0

這是個壞主意。 QWidget :: showEvent()受保護的虛函數應該被重新實現。你的例子的一個缺點:有兩個函數「show()」和「myShow()」在這個類中做同樣的事情,但你需要記住(並讓其他團隊成員記住)只使用「myShow )」。 – VestniK 2010-06-04 08:24:58

+0

@VestniK我知道,我認爲jopa是正確的,當我們重新實現QWidget :: showEvent()函數時,它是正確的方法,但是!我可以閱讀*我是QT新手,所以請詳細說明*,至少對我而言,這種方法對Peeyush來說太複雜了。 VestniK,你是否學過C++,Qt或者書籍的最後? :) 與個人無關。 – mosg 2010-06-04 08:32:38

+0

我給了你詳細的解釋,爲什麼我認爲按照你的建議是個壞主意。無論Qt中的Peeyush知識如何,我都相信他將能夠重新實現一個受保護的虛擬功能。我確實相信,從一開始就應該學習最佳實踐。我認爲你的建議只有在沒有其他方法來實現這種功能的情況下才是好的,因爲它可能會導致難以調查的錯誤。我把-1作爲你的答案,因爲我真的認爲這是個不好的答案。不要個人承擔。 – VestniK 2010-06-04 19:18:34

相關問題