回答
每個QT小部件都有'show'信號嗎?
如果你看看Qt的源代碼,那麼你會發現QWidget的::展會是一個插槽:
public Q_SLOTS:
// Widget management functions
virtual void setVisible(bool visible);
void setHidden(bool hidden);
void show();
插槽主要是針對我們,程序員使我們能夠與信號連接的像點擊我們創建的按鈕等特定目的對某些小部件做了某些操作。至於Windows或Mac OS,我們有應用程序通過事件循環提供來自系統的所有事件。 QWidget以系統事件形式發出的所有'信號'作出反應,然後執行show()
或showMaximized()
或showMinimized
時隙。
但我可以假設你想重載
virtual void showEvent(QShowEvent *);
virtual void hideEvent(QHideEvent *);
像:
void MyWidget::showEvent(QShowEvent *e)
{
if (isMaximized())
{
if (e->spontaneous())
{
// the author would like to know
// if the event is issued by the system
}
; // the action for maximized
}
else
{
; // the action for normal show
}
}
void MyWidget::hideEvent(QHideEvent *)
{
if (isMinimized())
{
; // the action for minimized
}
else
{
; // the action for hide
}
}
因爲當系統運行,我們可以用QEvent::spontaneous()小部件識別的情況。
請同時參閱顯示和隱藏事件文檔頁面: http://doc.qt.io/qt-5/qshowevent-members.html http://doc.qt.io/qt-5/qhideevent.html
這似乎是我需要做的。我是QT新手。這是否意味着我們需要重寫show方法?它在公共Q_SLOTS下定義。它是虛擬的嗎? –
你只重載事件處理程序,並做任何你想要的。 – AlexanderVX
我發現showEvent在第一次顯示widget或最大化時被調用;但是由於某種原因isMaximized()不返回true。 showEvent在最小化時不會被調用,我想我可能想在案例中使用hideEvent。 –
- 1. QT小部件信號 - 綜合列表?
- 2. Android UI上的每個小部件都是一個View對象?
- 3. Qt - 動態創建窗口小部件的連接信號
- 4. Qt:動態小部件信號和插槽連接
- 5. Qt 5.0中的非小部件上的信號/插槽
- 6. Qt:是否可以將信號連接到Qt設計器中的信號
- 7. PayPal payer_id是否每個信用卡都是唯一的?
- 8. QT小部件與QT GUI
- 9. 是否有信號燈
- 10. Qt:檢測鼠標是否超過某個小部件,即使該小部件沒有焦點
- 11. Java是否具有提升或Qt信號的等價性?
- 12. 發出Qt信號時是否有可能拋出異常?
- 13. Qt是否有一個氣球小部件(彈出指向其父)?
- 14. QT信號/在一個插件
- 15. 從小部件到小部件的自定義信號
- 16. jQuery的.show沒有。每個
- 17. 信號QT,QueuedConnection
- 18. Qt/C++:標識事件處理程序中的父窗口小部件(信號)
- 19. 是否每個MOUSE_DOWN都保證MOUSE_UP?
- 20. Flutter是否有「overscroll gesture recognizer」小部件?
- 21. 發行版中的每個Perl模塊是否都需要有版本號?
- 22. Qt信號驅動的尾部程序
- 23. 外部DLL中缺少Qt信號
- 24. 每個內部都有迴路
- 25. Qt是否只加載適合窗口的小部件?
- 26. 是否可以從qt QColumnView中刪除預覽小部件?
- 27. 如何通知小部件有關Qt中另一個小部件的更改?
- 28. 是否有Qt小部件來瀏覽應用程序中的小部件層次結構(類似於Spy ++)?
- 29. 沒有裝飾的Qt小部件
- 30. C++是否符合以及如何從信號中刪除小部件
我不這麼認爲,但你可以重新實現了QWidget :: showEvent(QShowEvent *)發出自己的信號。 –