我需要什麼才能在QWidget
派生類中調用showEvent()
?如何讓showEvent()被調用?
ConfigMenuForm.h
//simplified the code of the class declaration
class ConfigMenuForm : public QWidget
{
Q_OBJECT
public:
explicit ConfigMenuForm(QWidget *parent = 0);
~ConfigMenuForm();
signals:
public slots:
private slots:
protected:
void showEvent(QShowEvent *event) override; //with or without the override keyword, no change
private:
}
ConfigMenuForm.cpp
//amongst others
void ConfigMenuForm::showEvent(QShowEvent * event)
{
//do some stuff here - really simple
}
我不能擁有它觸發時我show()
我的小工具...... 我指的是代碼有沒有效果和放置中斷點時,它不會停止,所以我假設該事件未被觸發。
我在做什麼錯?
編輯 - 加入更多的代碼和精度:
我使用QtCreator 3.0.0使用Qt 5.2.0(2010 MSVC,32位)
//creating the widget in the main window's constructor (class Viewer)
// ConfigMenuForm calls hide() in its own constructor
m_configMenuForm = new ConfigMenuForm(this);
然後當我按下一個按鈕主窗口
void Viewer::ontBConfigClicked()
{
m_configMenuForm->show();
}
什麼讓我困惑的是,m_configMenuForm
實際上是在主窗口的頂部顯示,它變得可見,正確的工作!只是showEvent沒有被調用。
你是怎麼調用這個小部件的'show'的? –
爲了讓'showEvent'打電話,你只需要做你*說過的*你已經完成的事情。這是一個[最小示例](http://pastebin.com/3FCjuS990)。如果您正在通過放置一個斷點進行測試,也許您沒有將調試器附加到您的應用程序中。如果您使用的是Qt Creator,則需要使用「開始調試」按鈕「F5」(而不是「運行」按鈕「ctrl + R」)。 – Mike
@Jonathan Mee:直接調用擁有這個小部件的另一個小部件的show()插槽 – RDK