歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Qt4之改變窗體顯示風格

Qt4之改變窗體顯示風格

日期:2017/3/1 11:09:17   编辑:Linux編程

可以利用QStyleFactory獲得當前系統支持的窗體風格,也可以調用QApplication::setStyle()改變窗體的風格。

本實例通過一個顯示風格可變窗體,通過下拉列表框中的選擇,改變窗體的顯示風格。

代碼如下所示:

style.h:

  1. #ifndef STYLE_H
  2. #define STYLE_H
  3. #include <QDialog>
  4. class QFrame;
  5. class Style : public QDialog
  6. {
  7. Q_OBJECT
  8. public:
  9. Style(QWidget *parent=0);
  10. void createLeftLayout();
  11. void createRightLayout();
  12. public slots:
  13. void slotChangeStyle(QString);
  14. private:
  15. QFrame *leftFrame;
  16. QFrame *rightFrame;
  17. };
  18. #endif // STYLE_H
style.cpp:
  1. #include "style.h"
  2. #include <QtGui>
  3. Style::Style(QWidget *parent)
  4. :QDialog(parent)
  5. {
  6. setWindowTitle(tr("Change Window Style"));
  7. createLeftLayout();
  8. createRightLayout();
  9. QHBoxLayout *mainLayout = new QHBoxLayout;
  10. mainLayout->setMargin(10);
  11. mainLayout->setSpacing(5);
  12. mainLayout->addWidget(leftFrame);
  13. mainLayout->addWidget(rightFrame);
  14. setLayout(mainLayout);
  15. }
  16. void
  17. Style::createLeftLayout()
  18. {
  19. leftFrame = new QFrame;
  20. leftFrame->setFrameStyle(QFrame::Panel|QFrame::Raised);
  21. QComboBox *styleComboBox = new QComboBox;
  22. styleComboBox->addItems(QStyleFactory::keys());
  23. QPushButton *button = new QPushButton(tr("pushbutton"));
  24. QHBoxLayout *hbox = new QHBoxLayout;
  25. hbox->addWidget(styleComboBox);
  26. hbox->addWidget(button);
  27. QSpinBox *spinBox = new QSpinBox;
  28. spinBox->setRange(0,9);
  29. QLineEdit *lineEdit = new QLineEdit;
  30. lineEdit->setText("Hello Hello");
  31. QGroupBox *group = new QGroupBox;
  32. QRadioButton *radio1 = new QRadioButton(tr("radiobutton1"),group);
  33. QRadioButton *radio2 = new QRadioButton(tr("radiobutton2"),group);
  34. QRadioButton *radio3 = new QRadioButton(tr("radiobutton3"),group);
  35. QCheckBox *checkBox = new QCheckBox(tr("checkbox"),group);
  36. QVBoxLayout *groupLayout = new QVBoxLayout;
  37. groupLayout->addWidget(radio1);
  38. groupLayout->addWidget(radio2);
  39. groupLayout->addWidget(radio3);
  40. groupLayout->addWidget(checkBox);
  41. group->setLayout(groupLayout);
  42. QVBoxLayout *vbox = new QVBoxLayout;
  43. vbox->addLayout(hbox);
  44. vbox->addWidget(spinBox);
  45. vbox->addWidget(lineEdit);
  46. vbox->addWidget(group);
  47. leftFrame->setLayout(vbox);
  48. connect(styleComboBox,SIGNAL(activated(QString)),this,SLOT(slotChangeStyle(QString)));
  49. slotChangeStyle(QStyleFactory::keys()[0]);
  50. }
  51. void
  52. Style::createRightLayout()
  53. {
  54. rightFrame = new QFrame;
  55. rightFrame->setFrameStyle(QFrame::Panel|QFrame::Raised);
  56. QSlider * slider = new QSlider(Qt::Horizontal);
  57. QTableWidget *table = new QTableWidget;
  58. table->setColumnCount(3);
  59. table->setRowCount(4);
  60. QTextEdit *edit = new QTextEdit;
  61. 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.");
  62. QVBoxLayout *layout = new QVBoxLayout;
  63. layout->setSpacing(10);
  64. layout->addWidget(slider);
  65. layout->addWidget(table);
  66. layout->addWidget(edit);
  67. rightFrame->setLayout(layout);
  68. }
  69. void
  70. Style::slotChangeStyle(QString style)
  71. {
  72. QApplication::setStyle(QStyleFactory::create(style));
  73. QApplication::setPalette(QApplication::style()->standardPalette());
  74. }

main.cpp:

  1. #include <QApplication>
  2. #include "style.h"
  3. int
  4. main(int argc, char * argv[])
  5. {
  6. QApplication app(argc,argv);
  7. Style s;
  8. s.show();
  9. return app.exec();
  10. }
Copyright © Linux教程網 All Rights Reserved