qt控件基本应用

来源:互联网 发布:内存泄漏java 编辑:程序博客网 时间:2024/06/07 14:24

Qt里面有很多控件,让我们来看一些常用控件。

首先是对pro文件的配置

 HEADERS += \
MyWidget.h

SOURCES += \
MyWidget.cpp

QT+=widgets gui
CONFIG += c++11

因为要用到lambda所以要加一个CONFIG+=c++11

下面是MyWidget.h

[cpp] view plain copy
  1. #ifndef MYWIDGET_H  
  2. #define MYWIDGET_H  
  3.   
  4. #include <QWidget>  
  5. #include <QTextEdit>  
  6. class MyWidget : public QWidget  
  7. {  
  8.     Q_OBJECT  
  9. public:  
  10.     explicit MyWidget(QWidget *parent = 0);  
  11.   
  12. signals:  
  13.   
  14. public slots:  
  15.     //槽函数  
  16.     void comboChanged(const QString&);  
  17. protected:  
  18.     QTextEdit *edit1;  
  19. };  
  20.   
  21. #endif // MYWIDGET_H  

下面是MyWidget.cpp

 

[cpp] view plain copy
  1. #include "MyWidget.h"  
  2. #include <QApplication>  
  3. #include <QLabel>//显示静态文本或者图片  
  4. #include <QPushButton>  
  5. #include <QLineEdit>//一行  
  6. #include <QComboBox>  
  7. #include <QCheckBox>  
  8. #include <QRadioButton>  
  9. #include <QTextEdit>//富文本  
  10. #include <QTextBrowser>//只读富文本  
  11. #include <QGroupBox>//分类框  
  12. #include <QSlider> //滑块  
  13. #include <QSpinBox> //数字的  
  14. #include <QDateEdit>  
  15. #include <QTimeEdit>  
  16. #include <QDateTimeEdit>  
  17. #include <QVBoxLayout>  
  18. #include <QCompleter>  
  19. #include <QHBoxLayout>  
  20. #include <QDebug>  
  21. #include <QPixmap>  
  22. #include <QLCDNumber>  
  23. MyWidget::MyWidget(QWidget *parent) : QWidget(parent)  
  24. {  
  25.     //垂直布局  
  26.     QVBoxLayout* lay = new QVBoxLayout(this);  
  27.     //一个label  
  28.     QLabel* label;  
  29.     //一个下拉框  
  30.     QComboBox *combo;  
  31.     //一个按钮  
  32.     QPushButton* button;  
  33.     //一个点选框  
  34.     QRadioButton* radio;  
  35.     //一个富文本  
  36.     QTextEdit* edit;  
  37.     //一个组  
  38.     QGroupBox* group;  
  39.     //Qt里面可以用html来对控件的样式做变化  
  40.     lay->addWidget(label=new QLabel("<a href='www.baidu.com'>baidu</a>"));  
  41.     //设置按钮背景图片  
  42.     label->setPixmap(QPixmap("../bbb.jpg"));  
  43.     //c++11里面的新特性,相对于槽模式,lambda更加方便  
  44.     connect(label,&QLabel::linkActivated,[](QString str){  
  45.         qDebug() << str;  
  46.     });  
  47.     lay->addWidget(button=new QPushButton("Button"));  
  48.     //设置css样式表,可见qt还是比较强大的  
  49.     button->setStyleSheet("QPushButton {font:bold 16px;color:red}");  
  50.     lay->addWidget(radio=new QRadioButton("Radio"));  
  51.     radio->setStyleSheet("QRadioButton {font:bold 16px;color:red}");  
  52.     lay->addWidget(new QCheckBox("check"));  
  53.     connect(radio,&QRadioButton::clicked,[](bool v){  
  54.         qDebug() << v;  
  55.     });  
  56.     //添加下拉框  
  57.     lay->addWidget(combo=new QComboBox());  
  58.     //添加2个元素  
  59.     combo->addItem("select item1");  
  60.     combo->addItem("select item2");  
  61.     //设置是否可编辑  
  62.     combo->setEditable(true);  
  63.     //注释掉的部分是自动补全的提示  
  64.     //    combo->setCompleter(new QCompleter(QStringList() << "aaa" << "bbb"));  
  65.     //槽模式,注意在别的地方有相应的函数  
  66.     connect(combo,SIGNAL(currentIndexChanged(QString)),this,SLOT(comboChanged(QString)));  
  67.     //设置自动补全提示,内容为前面的item  
  68.     combo->setCompleter(new QCompleter(combo->model()));  
  69.     //添加富文本  
  70.     lay->addWidget(edit=new QTextEdit);  
  71.     edit->setText("<table border=1><tr><th>header1</th><th>header2</th></tr>"  
  72.                   "<tr><td>value1</td><td>value2</td></tr>"  
  73.                   "<tr><td>value3</td><td>value4</td></tr>"  
  74.                   "</table>"  
  75.                   "<br />"  
  76.                   "<img src=../aaa.jpg></img>");  
  77.       
  78.     lay->addWidget(edit1=new QTextEdit);  
  79.     connect(edit1,&QTextEdit::textChanged,[&](){  
  80.         qDebug() << edit1->toPlainText();  
  81.     });  
  82.     //添加组  
  83.     lay->addWidget(group=new QGroupBox("some items"));  
  84.     //水平布局  
  85.     QHBoxLayout* layout;  
  86.     //把组的布局设置为水平布局  
  87.     group->setLayout(layout=new QHBoxLayout);  
  88.     layout->addWidget(new QPushButton("aaaa"));  
  89.     layout->addWidget(new QPushButton("aaaa"));  
  90.       
  91.     //把组加入到最开始的垂直布局里面  
  92.     lay->addWidget(new QGroupBox);  
  93.     //滑块  
  94.     QSlider* slider;  
  95.     lay->addWidget(slider=new QSlider(Qt::Horizontal));  
  96.     //设置滑块的最小值  
  97.     slider->setMinimum(0);  
  98.     //设置滑块的最大值  
  99.     slider->setMaximum(100);  
  100.     //spinbox类似于滑块,不过其会显示值  
  101.     QSpinBox* spinBox;  
  102.     lay->addWidget(spinBox=new QSpinBox);  
  103.       
  104.     spinBox->setMaximum(100);  
  105.     spinBox->setMinimum(0);  
  106.     //槽函数,把slider点的值给spinBox  
  107.     connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));  
  108.     lay->addWidget(new QDateTimeEdit);  
  109.     //LCDNumber显示LCD数字  
  110.     QLCDNumber* number;  
  111.     lay->addWidget(number=new QLCDNumber(10));  
  112.     //显示12345  
  113.     number->display(12345);  
  114.     //显示风格  
  115.     number->setSegmentStyle(QLCDNumber::Flat);  
  116. }  
  117.   
  118. void MyWidget::comboChanged(const QString &str)  
  119. {  
  120.     qDebug() << "combo value is " << str;  
  121. }  
  122.   
  123. int main(int argc,char** argv)  
  124. {  
  125.     QApplication app(argc,argv);  
  126.     MyWidget w;  
  127.     w.show();  
  128.     return app.exec();  
  129. }  

我已经对其进行了解释。

然后接下来我们看看显示效果,有点逗,敬请谅解。

 
0 0