2013-02-27 132 views

回答

2

正如ixSci所提到的,使用setTitleBarWidget()是解決此問題的潛在方法。話雖如此,我正在尋找一個更簡單的解決方案,理想情況下使用QSS(Qt樣式表)。因此,在深入瞭解QDockWidget的源代碼之後,我發現了一種更適合我的需求的替代方法。

我想找到這些地方這些floatclose按鈕被創建。這是在QDockWidget.cppQDockWidgetPrivate::init()方法中。

至於爲例,float按鈕創建這樣的:

QAbstractButton *button = new QDockWidgetTitleButton(q); 
button->setObjectName(QLatin1String("qt_dockwidget_floatbutton")); 
QObject::connect(button, SIGNAL(clicked()), q, SLOT(_q_toggleTopLevel())); 
layout->setWidgetForRole(QDockWidgetLayout::FloatButton, button); 

現在我需要的是使用Qt樣式表的靈活性,對於我只需要對象名稱,在這種情況下,它的「qt_dockwidget_floatbutton

因此,所有你需要做的,到了QDockWidgetCloseFloat按鍵設置提示,就是添加以下應用程序中的樣式表的樣式兩條線

QAbstractButton#qt_dockwidget_closebutton{qproperty-toolTip: "Close";} 
QAbstractButton#qt_dockwidget_floatbutton{qproperty-toolTip: "Restore";} 
1

您可以實現任何你想要的標題窗口小部件,並與setTitleBarWidget()設置。在那個小部件中,你可以添加任何你需要的工具提示按鈕。