我想知道是否有可能在Qt中使应用程序完全蒙皮/样式我的意思是不仅控制应用程序窗口内的控件而且主窗口本身!比如关闭按钮/最大化按钮/最小化按钮和条形图,以及主窗口边框!,是否可以在Qt中执行此操作?以及如何?
答案 0 :(得分:2)
是的,这是可能的。 Qt中最好的方法是使用Qt样式表。 Qt documentation有很多示例,您可以通过指定整个类(如QPushButton)或单个命名小部件来设置所有小部件的样式。
至于标题栏上的项目,我不确定是否可以直接使用,但您当然可以关闭包含最小化/最大化按钮的主工具栏,然后实现和样式你自己的小部件在复制他们的功能时。
答案 1 :(得分:1)
QWidget
构造函数的第二个参数是Qt::WindowFlags
。您可以使用标志来控制窗口的属性。例如,传递标志Qt::FramelessWindowHint
以创建无边框窗口。
在代码中有几种方法可以做到这一点。您可以在小部件构造函数中使用setWindowsFlag
方法:
setWindowFlags(Qt::FramelessWindowHint);
如果要创建自定义窗口小部件,可以将标记传递给QWidget's
构造函数:
YourWidget::YourWidget(QWidget *parent) : QWidget(parent, Qt::FramelessWindowHint)
{
// ....
}
或者您可以在创建窗口小部件时传递标记:
QWidget *your_widget = new QWidget(parent, Qt::FramelessWindowHint);
还有最小化按钮(Qt::WindowMinimizeButtonHint
),最大化按钮(Qt::WindowMaximizeButtonHint
),关闭按钮(Qt::WindowCloseButtonHint
)和标题栏(Qt::WindowTitleHint
)的标志。使用这些标志,您还必须设置Qt::CustomizeWindowHint
以禁用默认值,如文档中所述。
有关完整列表和其他详细信息,请参阅flags documentation。
正如@ Merlin069所述,样式表允许您控制应用程序中小部件的外观。