网站建设可以先备案嘛先建设网站后付款
web/
2025/9/27 18:26:59/
文章来源:
网站建设可以先备案嘛,先建设网站后付款,模板网站建设的弊端,优化设计答案五年级下册文章目录 1. QStyle的作用#xff08;实现不同系统下的界面效果的匹配#xff09;2. Qt内置样式的使用3. 源码3.1 可视化UI设计3.2 mainwindow.cpp 1. QStyle的作用#xff08;实现不同系统下的界面效果的匹配#xff09;
Qt 是一个跨平台的类库#xff0c;相同的界面组件… 文章目录 1. QStyle的作用实现不同系统下的界面效果的匹配2. Qt内置样式的使用3. 源码3.1 可视化UI设计3.2 mainwindow.cpp 1. QStyle的作用实现不同系统下的界面效果的匹配
Qt 是一个跨平台的类库相同的界面组件在不同的操作系统上显示效果是不一样的。QStyle是封装了 GUI 界面组件外观的抽象类Qt 定义了 QStyle 类的一些子类应用于不同的操作系统如QWindowsStyle和QMacStyle 等。这些样式是 QtGUI 模块自带的在不同的平台上编译运行的程序具有缺省的样式QApplication::style()可以返回应用程序缺省的样式 Qt 内置的界面组件都使用 QStyle 进行绘制以保证它们与运行平台的界面效果一致如图16-8 所示是OComboBox在不同操作系统上的九种不同的样式。 QStyleFactory 类管理着 Qt 的内置样式QStyleFactory 有两个静态函数 keys()和 create()其函数原型如下:
[static] QStringList QStyleFactory::keys()
[static] QStyle *QStyleFactory::create(const QString key)keys()函数返回一个字符串列表是所在平台支持的 QStyle 的名称列表create()函数根据样式名称字符串创建一个QStyle 对象。 QApplication 有两个静态函数用于操作样式其函数原型为:
QStyle *QApplication::style()
void QApplication::setStyle(QStyle *style)style()函数返回应用程序当前的样式任何一个 GUI 应用程序在创建时就有一个缺省的样式通过下面的语句:
QApplication::style()-metaObject ()-className()
setStyle()为应用程序设置一个样式设置样式后界面元素都具有这个样式所定义的外观。
除了这些 Qt 内置的样式用户也可以从 QStyle 类继承定义自己的样式一般是从 QStyle的子类QProxyStyle 继承。
2. Qt内置样式的使用
使用 Qt内置的样式可以通过 QStyleFactory:keys()获取运行平台支持的样式列表然后用QStyleFactory::create()创建样式再用 QApplication::setStyle0)设置样式即可。
创建一个基于QMainWindow 的 Widget 应用程序 samp16_2并设计界面。如图 16-9 所示是设置为QWindowsStyle样式时的运行界面具有老式的 Windows 界面效果。 下面是主窗口构造函数的代码:
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui-setupUi(this);QRegExp regExp(.(.*)\\?Style);QString defaultStyle QApplication::style()-metaObject()-className();
// ui-LabDefaultStyle-setText(defaultStyle);ui-statusBar-showMessage(defaultStyle);if (regExp.exactMatch(defaultStyle))defaultStyle regExp.cap(1);ui-comboSysStyle-addItems(QStyleFactory::keys());ui-comboSysStyle-setCurrentIndex(ui-comboSysStyle-findText(defaultStyle, Qt::MatchContains));
// ui-comboSysStyle-setCurrentIndex(ui.styleSheetCombo-findText(Coffee));
// loadStyleSheet(Coffee);
}在构造函数中通过QStyleFactory::keys()获取当前平台上的样式名称列表并添加到下拉列表框comboSysStyle 里。 程序运行后在“系统样式”下拉列表框里会显示当前平台支持的样式列表例如在 Windows平台上列表里会有 Widnows、WidnowsXP、WidnowsVista和 Fusion。在“系统样式”下拉列表框中选择一个样式可以为应用程序设置样式下拉列表框comboSysStyle 的currentIndexChanged()信号响应槽函数代码如下:
void MainWindow::on_comboSysStyle_currentIndexChanged(const QString arg1)
{
// qApp-setStyle(arg1);QStyle *styleQStyleFactory::create(arg1);qApp-setStyle(style);ui-statusBar-showMessage(style-metaObject()-className());
}这里首先使用 QStyleFactory::create(argl)根据选择的样式名称字符串 argl 创建样式 style然后使用qApp-setStyle(style)为应用程序设置样式。
如果不是需要显示样式的类名称直接使用qApp-setStyle(arg1)也可以为应用程序设置样式。
窗口上有“取消样式表”和“应用样式表”两个按钮代码如下:
void MainWindow::on_btnNormal_clicked()
{//正常样式去除所有样式表this-setStyleSheet();
}void MainWindow::on_btnStyleSheet_clicked()
{//设置样式表this-setStyleSheet(QPlainTextEdit{color: blue; font: 13pt 宋体;}QPushButton:hover{background-color:lime;}QLineEdit{ border: 2px groove red;background-color: rgb(170, 255, 127); border-radius: 6px;}QCheckBox:checked{color: red;}QRadioButton:checked{color:red;});}“应用样式表”按钮的代码为界面上的几个显示组件类设置了样式表在设置样式表后即使修改窗口样式这些样式表定义的显示效果依然存在。
3. 源码
3.1 可视化UI设计 3.2 mainwindow.cpp
#include mainwindow.h
#include ui_mainwindow.h#include QStyleFactoryMainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui-setupUi(this);QRegExp regExp(.(.*)\\?Style);QString defaultStyle QApplication::style()-metaObject()-className();
// ui-LabDefaultStyle-setText(defaultStyle);ui-statusBar-showMessage(defaultStyle);if (regExp.exactMatch(defaultStyle))defaultStyle regExp.cap(1);ui-comboSysStyle-addItems(QStyleFactory::keys());ui-comboSysStyle-setCurrentIndex(ui-comboSysStyle-findText(defaultStyle, Qt::MatchContains));
// ui-comboSysStyle-setCurrentIndex(ui.styleSheetCombo-findText(Coffee));
// loadStyleSheet(Coffee);
}MainWindow::~MainWindow()
{delete ui;
}void MainWindow::on_comboSysStyle_currentIndexChanged(const QString arg1)
{
// qApp-setStyle(arg1);QStyle *styleQStyleFactory::create(arg1);qApp-setStyle(style);ui-statusBar-showMessage(style-metaObject()-className());
}void MainWindow::on_btnNormal_clicked()
{//正常样式去除所有样式表this-setStyleSheet();
}void MainWindow::on_btnFontLarge_clicked()
{//大字体ui-plainTextEdit-setStyleSheet(font: 13pt 宋体;);
}void MainWindow::on_btnFontSmall_clicked()
{//小字体ui-plainTextEdit-setStyleSheet(font: 10pt 宋体;);
}void MainWindow::on_btnStyleSheet_clicked()
{//设置样式表this-setStyleSheet(QPlainTextEdit{color: blue; font: 13pt 宋体;}QPushButton:hover{background-color:lime;}QLineEdit{ border: 2px groove red;background-color: rgb(170, 255, 127); border-radius: 6px;}QCheckBox:checked{color: red;}QRadioButton:checked{color:red;});}
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/81026.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!