加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

Qt4之革新窗体显示风格

发布时间:2021-12-18 17:18:30 所属栏目:教程 来源:互联网
导读:可以利用QStyleFactory获得当前系统支持的窗体风格,也可以调用QApplication::setStyle()改变窗体的风格。 本实例通过一个显示风格可变窗体,通过下拉列表框中的选择,改变窗体的显示风格。 代码如下所示: style.h: #ifndef STYLE_H #define STYLE_H #incl

可以利用QStyleFactory获得当前系统支持的窗体风格,也可以调用QApplication::setStyle()改变窗体的风格。
 
本实例通过一个显示风格可变窗体,通过下拉列表框中的选择,改变窗体的显示风格。
 
代码如下所示:
 
style.h:
 
#ifndef STYLE_H   
#define STYLE_H   
  
#include <QDialog>   
  
class QFrame;  
  
class Style : public QDialog  
{  
    Q_OBJECT  
public:  
    Style(QWidget *parent=0);  
      
    void createLeftLayout();  
    void createRightLayout();  
      
public slots:  
    void slotChangeStyle(QString);  
      
private:  
    QFrame *leftFrame;  
    QFrame *rightFrame;  
};  
  
#endif  // STYLE_H  
style.cpp:
#include "style.h"   
  
#include <QtGui>   
  
Style::Style(QWidget *parent)  
    :QDialog(parent)  
{  
    setWindowTitle(tr("Change Window Style"));  
      
    createLeftLayout();  
    createRightLayout();  
      
    QHBoxLayout *mainLayout = new QHBoxLayout;  
    mainLayout->setMargin(10);  
    mainLayout->setSpacing(5);  
    mainLayout->addWidget(leftFrame);  
    mainLayout->addWidget(rightFrame);  
    setLayout(mainLayout);  
}  
  
void  
Style::createLeftLayout()  
{      
    leftFrame = new QFrame;  
    leftFrame->setFrameStyle(QFrame::Panel|QFrame::Raised);  
    QComboBox *styleComboBox = new QComboBox;  
    styleComboBox->addItems(QStyleFactory::keys());  
  
    QPushButton *button = new QPushButton(tr("pushbutton"));  
    QHBoxLayout *hbox = new QHBoxLayout;  
    hbox->addWidget(styleComboBox);  
    hbox->addWidget(button);  
      
    QSpinBox *spinBox = new QSpinBox;  
    spinBox->setRange(0,9);  
    QLineEdit *lineEdit = new QLineEdit;  
    lineEdit->setText("Hello Hello");  
      
    QGroupBox *group = new QGroupBox;  
    QRadioButton *radio1 = new QRadioButton(tr("radiobutton1"),group);  
    QRadioButton *radio2 = new QRadioButton(tr("radiobutton2"),group);  
    QRadioButton *radio3 = new QRadioButton(tr("radiobutton3"),group);  
    QCheckBox *checkBox = new QCheckBox(tr("checkbox"),group);  
    QVBoxLayout *groupLayout = new QVBoxLayout;  
    groupLayout->addWidget(radio1);  
    groupLayout->addWidget(radio2);  
    groupLayout->addWidget(radio3);  
    groupLayout->addWidget(checkBox);  
    group->setLayout(groupLayout);  
      
    QVBoxLayout *vbox = new QVBoxLayout;  
    vbox->addLayout(hbox);  
    vbox->addWidget(spinBox);  
    vbox->addWidget(lineEdit);  
    vbox->addWidget(group);  
      
    leftFrame->setLayout(vbox);  
  
    connect(styleComboBox,SIGNAL(activated(QString)),this,SLOT(slotChangeStyle(QString)));  
    slotChangeStyle(QStyleFactory::keys()[0]);  
}  
  
void  
Style::createRightLayout()  
{  
    rightFrame = new QFrame;  
    rightFrame->setFrameStyle(QFrame::Panel|QFrame::Raised);  
      
    QSlider * slider = new QSlider(Qt::Horizontal);  
    QTableWidget *table = new QTableWidget;  
    table->setColumnCount(3);  
    table->setRowCount(4);  
    QTextEdit *edit = new QTextEdit;  
    edit->setText("Hello World!n Qt by Trolltech is the standard framework for developing high-performance cross-platform applications.Qt provides single-source portability across Microsoft Windows, Mac OS X, Linux, all major commercial Unix variants, and embedded Linux. On embedded Linux, the Qt API is available as Qtopia Core.");  
    QVBoxLayout *layout = new QVBoxLayout;  
    layout->setSpacing(10);  
    layout->addWidget(slider);  
    layout->addWidget(table);  
    layout->addWidget(edit);  
      
    rightFrame->setLayout(layout);  
}  
  
void  
Style::slotChangeStyle(QString style)  
{  
  
    QApplication::setStyle(QStyleFactory::create(style));  
    QApplication::setPalette(QApplication::style()->standardPalette());  
}  
main.cpp:
 
#include <QApplication>   
#include "style.h"   
  
int  
main(int argc, char * argv[])  
{  
    QApplication app(argc,argv);  
    Style s;  
    s.show();  
    return app.exec();  
}  

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读