国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

16-3_Qt 5.9 C++開發(fā)指南_使用QStyle 設(shè)置界面外觀_實(shí)現(xiàn)不同系統(tǒng)下的界面效果的匹配

這篇具有很好參考價(jià)值的文章主要介紹了16-3_Qt 5.9 C++開發(fā)指南_使用QStyle 設(shè)置界面外觀_實(shí)現(xiàn)不同系統(tǒng)下的界面效果的匹配。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. QStyle的作用(實(shí)現(xiàn)不同系統(tǒng)下的界面效果的匹配)

Qt 是一個(gè)跨平臺(tái)的類庫(kù),相同的界面組件在不同的操作系統(tǒng)上顯示效果是不一樣的。QStyle是封裝了 GUI 界面組件外觀的抽象類,Qt 定義了 QStyle 類的一些子類,應(yīng)用于不同的操作系統(tǒng)如QWindowsStyle和QMacStyle 等。這些樣式是 QtGUI 模塊自帶的,在不同的平臺(tái)上編譯運(yùn)行的程序具有缺省的樣式,QApplication::style()可以返回應(yīng)用程序缺省的樣式
Qt 內(nèi)置的界面組件都使用 QStyle 進(jìn)行繪制,以保證它們與運(yùn)行平臺(tái)的界面效果一致,如圖16-8 所示是OComboBox在不同操作系統(tǒng)上的九種不同的樣式。

16-3_Qt 5.9 C++開發(fā)指南_使用QStyle 設(shè)置界面外觀_實(shí)現(xiàn)不同系統(tǒng)下的界面效果的匹配,# Qt 5.9 C++開發(fā)指南,qt,c++,開發(fā)語(yǔ)言

QStyleFactory 類管理著 Qt 的內(nèi)置樣式,QStyleFactory 有兩個(gè)靜態(tài)函數(shù) keys()和 create(),其函數(shù)原型如下:

[static] QStringList QStyleFactory::keys()
[static] QStyle *QStyleFactory::create(const QString &key)

keys()函數(shù)返回一個(gè)字符串列表,是所在平臺(tái)支持的 QStyle 的名稱列表;create()函數(shù)根據(jù)樣式名稱字符串創(chuàng)建一個(gè)QStyle 對(duì)象。
QApplication 有兩個(gè)靜態(tài)函數(shù)用于操作樣式,其函數(shù)原型為:

QStyle *QApplication::style()
void QApplication::setStyle(QStyle *style)

style()函數(shù)返回應(yīng)用程序當(dāng)前的樣式,任何一個(gè) GUI 應(yīng)用程序,在創(chuàng)建時(shí)就有一個(gè)缺省的樣式,通過(guò)下面的語(yǔ)句:

QApplication::style()->metaObject ()->className()

setStyle()為應(yīng)用程序設(shè)置一個(gè)樣式,設(shè)置樣式后,界面元素都具有這個(gè)樣式所定義的外觀。

除了這些 Qt 內(nèi)置的樣式,用戶也可以從 QStyle 類繼承,定義自己的樣式,一般是從 QStyle的子類QProxyStyle 繼承。

2. Qt內(nèi)置樣式的使用

使用 Qt內(nèi)置的樣式,可以通過(guò) QStyleFactory:keys()獲取運(yùn)行平臺(tái)支持的樣式列表,然后用QStyleFactory::create()創(chuàng)建樣式,再用 QApplication::setStyle0)設(shè)置樣式即可。

創(chuàng)建一個(gè)基于QMainWindow 的 Widget 應(yīng)用程序 samp16_2,并設(shè)計(jì)界面。如圖 16-9 所示是設(shè)置為QWindowsStyle樣式時(shí)的運(yùn)行界面,具有老式的 Windows 界面效果。

16-3_Qt 5.9 C++開發(fā)指南_使用QStyle 設(shè)置界面外觀_實(shí)現(xiàn)不同系統(tǒng)下的界面效果的匹配,# Qt 5.9 C++開發(fā)指南,qt,c++,開發(fā)語(yǔ)言

下面是主窗口構(gòu)造函數(shù)的代碼:

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");
}

在構(gòu)造函數(shù)中,通過(guò)QStyleFactory::keys()獲取當(dāng)前平臺(tái)上的樣式名稱列表,并添加到下拉列表框comboSysStyle 里。
程序運(yùn)行后,在“系統(tǒng)樣式”下拉列表框里會(huì)顯示當(dāng)前平臺(tái)支持的樣式列表,例如在 Windows平臺(tái)上,列表里會(huì)有 Widnows、WidnowsXP、WidnowsVista和 Fusion。在“系統(tǒng)樣式”下拉列表框中選擇一個(gè)樣式可以為應(yīng)用程序設(shè)置樣式,下拉列表框comboSysStyle 的currentIndexChanged()信號(hào)響應(yīng)槽函數(shù)代碼如下:

void MainWindow::on_comboSysStyle_currentIndexChanged(const QString &arg1)
{
//    qApp->setStyle(arg1);

    QStyle *style=QStyleFactory::create(arg1);
    qApp->setStyle(style);
    ui->statusBar->showMessage(style->metaObject()->className());
}

這里首先使用 QStyleFactory::create(argl)根據(jù)選擇的樣式名稱字符串 argl 創(chuàng)建樣式 style,然后使用qApp->setStyle(style)為應(yīng)用程序設(shè)置樣式。

如果不是需要顯示樣式的類名稱,直接使用qApp->setStyle(arg1)也可以為應(yīng)用程序設(shè)置樣式。

窗口上有“取消樣式表”和“應(yīng)用樣式表”兩個(gè)按鈕,代碼如下:

void MainWindow::on_btnNormal_clicked()
{//正常樣式,去除所有樣式表
    this->setStyleSheet("");
}

void MainWindow::on_btnStyleSheet_clicked()
{//設(shè)置樣式表
    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;}"
                        );

}

“應(yīng)用樣式表”按鈕的代碼為界面上的幾個(gè)顯示組件類設(shè)置了樣式表,在設(shè)置樣式表后,即使修改窗口樣式,這些樣式表定義的顯示效果依然存在。

3. 源碼

3.1 可視化UI設(shè)計(jì)

16-3_Qt 5.9 C++開發(fā)指南_使用QStyle 設(shè)置界面外觀_實(shí)現(xiàn)不同系統(tǒng)下的界面效果的匹配,# Qt 5.9 C++開發(fā)指南,qt,c++,開發(fā)語(yǔ)言文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-635566.html

3.2 mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include    <QStyleFactory>

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");
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_comboSysStyle_currentIndexChanged(const QString &arg1)
{
//    qApp->setStyle(arg1);

    QStyle *style=QStyleFactory::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()
{//設(shè)置樣式表
    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;}"
                        );

}

到了這里,關(guān)于16-3_Qt 5.9 C++開發(fā)指南_使用QStyle 設(shè)置界面外觀_實(shí)現(xiàn)不同系統(tǒng)下的界面效果的匹配的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 06-3_Qt 5.9 C++開發(fā)指南_多窗體應(yīng)用程序的設(shè)計(jì)(主要的窗體類及其用途;窗體類重要特性設(shè)置;多窗口應(yīng)用程序設(shè)計(jì))

    06-3_Qt 5.9 C++開發(fā)指南_多窗體應(yīng)用程序的設(shè)計(jì)(主要的窗體類及其用途;窗體類重要特性設(shè)置;多窗口應(yīng)用程序設(shè)計(jì))

    常用的窗體基類是QWidget、QDialog 和QMainWindow,在創(chuàng)建 GUI應(yīng)用程序時(shí)選擇窗體基類就是從這 3 個(gè)類中選擇。QWidget 直接繼承于 QObject,是 QDialog 和 QMainWindow 的父類,其他繼承于 QWidget 的窗體類還有 QSplashScreen、QMdiSubWindow和QDesktopWidget。另外還有一個(gè)類QWindow,它同時(shí)從 QObject 和Q

    2024年02月13日
    瀏覽(26)
  • 11-3_Qt 5.9 C++開發(fā)指南_QSqlQuery的使用(QSqlQuery 是能執(zhí)行任意 SQL 語(yǔ)句的類)

    11-3_Qt 5.9 C++開發(fā)指南_QSqlQuery的使用(QSqlQuery 是能執(zhí)行任意 SQL 語(yǔ)句的類)

    QSqlQuery 是能執(zhí)行任意 SQL 語(yǔ)句的類,如 SELECT、INSERT、UPDATE、DELETE 等,QSqlQuery 類的一些常用函數(shù)見(jiàn)表 11-11(省略函數(shù)中的 const ,省略缺省參數(shù),不同參數(shù)的同名函數(shù)一般只給出一種參數(shù)形式)。 使用 QSqlQuery 執(zhí)行不帶參數(shù)的 SQL 語(yǔ)句時(shí)可以用 exec(QString)函數(shù),如: 上面是

    2024年02月15日
    瀏覽(23)
  • 11-2_Qt 5.9 C++開發(fā)指南_QSqlQueryModel的使用(QSqlQueryModel 只能作為只讀數(shù)據(jù)源使用,不可以編輯數(shù)據(jù))

    11-2_Qt 5.9 C++開發(fā)指南_QSqlQueryModel的使用(QSqlQueryModel 只能作為只讀數(shù)據(jù)源使用,不可以編輯數(shù)據(jù))

    從下圖中可以看到,QSqlQueryModel 是 QSqlTableModel 的父類。QSqlQueryModel封裝了執(zhí)行 SELECT 語(yǔ)句從數(shù)據(jù)庫(kù)查詢數(shù)據(jù)的功能,但是 QSqlQueryModel 只能作為只讀數(shù)據(jù)源使用,不可以編輯數(shù)據(jù)。 QSqlQueryModel 類的主要接口函數(shù)見(jiàn)表 11-10(省略了函數(shù)中的 const 和缺省參數(shù))。 使用QSqlQueryM

    2024年02月15日
    瀏覽(20)
  • 07-3_Qt 5.9 C++開發(fā)指南_文件目錄操作

    07-3_Qt 5.9 C++開發(fā)指南_文件目錄操作

    Qt 為文件和目錄操作提供了一些類,利用這些類可以方便地實(shí)現(xiàn)一些操作。Qt 提供的與文件和目錄操作相關(guān)的類包括以下幾個(gè)。 QCoreApplication:用于提取應(yīng)用程序路徑、程序名等文件信息 QFile: 除了打開文件操作外,QFile 還有復(fù)制文件、刪除文件等功能 QFileInfo:用于提取文件的信

    2024年02月13日
    瀏覽(49)
  • 09-1_Qt 5.9 C++開發(fā)指南_Qchart概述

    09-1_Qt 5.9 C++開發(fā)指南_Qchart概述

    Qt Charts 可以很方便地繪制常見(jiàn)的折線圖、柱狀圖、餅圖等圖表,不用自己耗費(fèi)時(shí)間和精力開發(fā)繪圖組件或使用第三方組件了。 本章首先介紹 Qt Charts 的基本特點(diǎn)和功能,以畫折線圖為例詳細(xì)說(shuō)明 Qt Charts 各主要部件的操作方法,再介紹各種常用圖表的繪圖方法,最后介紹鼠標(biāo)

    2024年02月13日
    瀏覽(69)
  • 07-1_Qt 5.9 C++開發(fā)指南_文件系統(tǒng)及文件讀寫_文本文件讀寫(使用 QTextStream 進(jìn)行文件讀寫更為方便)

    07-1_Qt 5.9 C++開發(fā)指南_文件系統(tǒng)及文件讀寫_文本文件讀寫(使用 QTextStream 進(jìn)行文件讀寫更為方便)

    文本文件是指以純文本格式存儲(chǔ)的文件,例如用 Qt Creator 編寫的 C++程序的頭文件 (.h 文件)和源程序文件 (.cpp 文件)。HTML 和 XML 文件也是純文本文件,只是其讀取之后需要對(duì)內(nèi)容進(jìn)行解析之后再顯示。 Qt 提供了兩種讀寫純文本文件的基本方法, 一種是用 QFile 類的 IODevice 讀寫

    2024年02月13日
    瀏覽(20)
  • 15-1_Qt 5.9 C++開發(fā)指南_Qt多媒體模塊概述

    15-1_Qt 5.9 C++開發(fā)指南_Qt多媒體模塊概述

    多媒體功能指的主要是計(jì)算機(jī)的音頻和視頻的輸入、輸出、顯示和播放等功能,Qt 的多媒體模塊為音頻和視頻播放、錄音、攝像頭拍照和錄像等提供支持,甚至還提供數(shù)字收音機(jī)的支持。本章將介紹 Qt 多媒體模塊的功能和使用。 Qt 多媒體模塊提供了很多類,可以實(shí)現(xiàn)如下的

    2024年02月13日
    瀏覽(39)
  • 04-6_Qt 5.9 C++開發(fā)指南_QListWidget和QToolButton

    04-6_Qt 5.9 C++開發(fā)指南_QListWidget和QToolButton

    Qt 中用于項(xiàng) (Item)處理的組件有兩類, 一類是 Item Views ,包括 QListView、QTreeView、QTableView、QColumnView 等; 另一類是 Item Widgets ,包括 QListWidget、QTreeWidget 和QTableWidget。 Item Views 基于模型/視圖(Model/Vicw)結(jié)構(gòu),視圖 (View)與模型數(shù)據(jù)(Model Data)關(guān)聯(lián)實(shí)現(xiàn)數(shù)據(jù)的顯示和編輯,模型/視圖結(jié)

    2024年02月13日
    瀏覽(31)
  • 04-5_Qt 5.9 C++開發(fā)指南_QComboBox和QPlainTextEdit

    04-5_Qt 5.9 C++開發(fā)指南_QComboBox和QPlainTextEdit

    QComboBox 是下拉列表框組件類,它提供一個(gè)下拉列表供用戶選擇,也可以直接當(dāng)作一個(gè)QLineEdit 用作輸入。OComboBox 除了顯示可見(jiàn)下拉列表外,每個(gè)項(xiàng) (item,或稱列表項(xiàng))還可以關(guān)聯(lián)一個(gè) QVariant 類型的變量,用于存儲(chǔ)一些不可見(jiàn)數(shù)據(jù)。 QPlainTextEdit 是一個(gè)多行文本編輯器,用于顯示

    2024年02月14日
    瀏覽(30)
  • 08-3_Qt 5.9 C++開發(fā)指南_Graphics View繪圖架構(gòu)

    08-3_Qt 5.9 C++開發(fā)指南_Graphics View繪圖架構(gòu)

    采用QPainter 繪圖時(shí)需要在繪圖設(shè)備的 paintEvent()事件里編寫繪圖的程序,實(shí)現(xiàn)整個(gè)繪圖過(guò)程。這種方法如同使用 Windows 的畫圖軟件在繪圖,繪制的圖形是位圖,這種方法適合于繪制復(fù)雜性不高的固定圖形,不能實(shí)現(xiàn)圖件的選擇、編輯、拖放、修改等功能。 Qt 為繪制復(fù)雜的可交

    2024年02月13日
    瀏覽(28)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包