Qt4之改变窗体显示风格
Qt4之改变窗体显示风格
可以利用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
- #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();
- }
评论暂时关闭