如何使应用程序在Qt中看起来漂亮?

如何使应用程序在Qt中看起来漂亮?,qt,qt5,Qt,Qt5,我想知道是否有可能让应用程序在Qt中完全蒙皮/样式化,我的意思是,不仅控制应用程序窗口内部,而且控制主窗口本身!如关闭按钮/最大化按钮/最小化按钮和栏,以及主窗口边框!,在Qt中可以这样做吗?怎么做?是的,这是可能的。Qt中最好的方法是使用Qt样式表。有很多示例,您可以通过指定整个类(如QPushButton)或单个命名的小部件来设置所有小部件的样式 至于标题栏上的项目,我不确定是否可以直接,但是您当然可以关闭包含最小化/最大化按钮的主工具栏,然后在复制其功能的同时实现和设置自己的小部件。QWi

我想知道是否有可能让应用程序在Qt中完全蒙皮/样式化,我的意思是,不仅控制应用程序窗口内部,而且控制主窗口本身!如关闭按钮/最大化按钮/最小化按钮和栏,以及主窗口边框!,在Qt中可以这样做吗?怎么做?

是的,这是可能的。Qt中最好的方法是使用Qt样式表。有很多示例,您可以通过指定整个类(如QPushButton)或单个命名的小部件来设置所有小部件的样式


至于标题栏上的项目,我不确定是否可以直接,但是您当然可以关闭包含最小化/最大化按钮的主工具栏,然后在复制其功能的同时实现和设置自己的小部件。

QWidget构造函数的第二个参数是
Qt::WindowFlags
。您可以使用这些标志来控制窗口的属性。例如,传递标志
Qt::FramelessWindowHint
以创建无边界窗口

在代码中有几种方法可以做到这一点。您可以在widgets构造函数中使用
setWindowsFlag
方法:

setWindowFlags(Qt::FramelessWindowHint);
YourWidget::YourWidget(QWidget *parent) : QWidget(parent, Qt::FramelessWindowHint)
{
    // ....
}
如果要创建自定义小部件,可以将标志传递给
QWidget的
构造函数:

setWindowFlags(Qt::FramelessWindowHint);
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::customizeWindowint
以禁用文档中描述的默认值

有关完整列表和其他详细信息,请参阅


正如@Merlin069所述,样式表允许您控制应用程序中小部件的外观。

谢谢!但是我怎么才能关闭主工具栏呢?将窗口模式更改为弹出模式,还是什么?网上有关于这方面的教程吗?提前感谢)您在最上面的窗口上设置了窗口标志。例如,使用Qt::FramelessWindowHint生成无边界窗口。请注意,这些标志是所需标志的OR组合: