2013-02-27 98 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()设置。在那个小部件中,你可以添加任何你需要的工具提示按钮。