如何使应用程序在Qt看起来不错?

时间:2014-05-06 15:12:02

标签: qt qt5

我想知道是否有可能在Qt中使应用程序完全蒙皮/样式我的意思是不仅控制应用程序窗口内的控件而且主窗口本身!比如关闭按钮/最大化按钮/最小化按钮和条形图,以及主窗口边框!,是否可以在Qt中执行此操作?以及如何?

2 个答案:

答案 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所述,样式表允许您控制应用程序中小部件的外观。