qt控件基本应用
Qt里面有很多控件,讓我們來(lái)看一些常用控件。
首先是對(duì)pro文件的配置
?HEADERS += \
MyWidget.h
SOURCES += \
MyWidget.cpp
QT+=widgets gui
CONFIG += c++11
因?yàn)橐玫絣ambda所以要加一個(gè)CONFIG+=c++11
下面是MyWidget.h
#ifndef MYWIDGET_H #define MYWIDGET_H#include <QWidget> #include <QTextEdit> class MyWidget : public QWidget {Q_OBJECT public:explicit MyWidget(QWidget *parent = 0);signals:public slots://槽函數(shù)void comboChanged(const QString&); protected:QTextEdit *edit1; };#endif // MYWIDGET_H下面是MyWidget.cpp
?
#include "MyWidget.h" #include <QApplication> #include <QLabel>//顯示靜態(tài)文本或者圖片 #include <QPushButton> #include <QLineEdit>//一行 #include <QComboBox> #include <QCheckBox> #include <QRadioButton> #include <QTextEdit>//富文本 #include <QTextBrowser>//只讀富文本 #include <QGroupBox>//分類(lèi)框 #include <QSlider> //滑塊 #include <QSpinBox> //數(shù)字的 #include <QDateEdit> #include <QTimeEdit> #include <QDateTimeEdit> #include <QVBoxLayout> #include <QCompleter> #include <QHBoxLayout> #include <QDebug> #include <QPixmap> #include <QLCDNumber> MyWidget::MyWidget(QWidget *parent) : QWidget(parent) {//垂直布局QVBoxLayout* lay = new QVBoxLayout(this);//一個(gè)labelQLabel* label;//一個(gè)下拉框QComboBox *combo;//一個(gè)按鈕QPushButton* button;//一個(gè)點(diǎn)選框QRadioButton* radio;//一個(gè)富文本QTextEdit* edit;//一個(gè)組QGroupBox* group;//Qt里面可以用html來(lái)對(duì)控件的樣式做變化lay->addWidget(label=new QLabel("<a href='www.baidu.com'>baidu</a>"));//設(shè)置按鈕背景圖片label->setPixmap(QPixmap("../bbb.jpg"));//c++11里面的新特性,相對(duì)于槽模式,lambda更加方便connect(label,&QLabel::linkActivated,[](QString str){qDebug() << str;});lay->addWidget(button=new QPushButton("Button"));//設(shè)置css樣式表,可見(jiàn)qt還是比較強(qiáng)大的button->setStyleSheet("QPushButton {font:bold 16px;color:red}");lay->addWidget(radio=new QRadioButton("Radio"));radio->setStyleSheet("QRadioButton {font:bold 16px;color:red}");lay->addWidget(new QCheckBox("check"));connect(radio,&QRadioButton::clicked,[](bool v){qDebug() << v;});//添加下拉框lay->addWidget(combo=new QComboBox());//添加2個(gè)元素combo->addItem("select item1");combo->addItem("select item2");//設(shè)置是否可編輯combo->setEditable(true);//注釋掉的部分是自動(dòng)補(bǔ)全的提示// combo->setCompleter(new QCompleter(QStringList() << "aaa" << "bbb"));//槽模式,注意在別的地方有相應(yīng)的函數(shù)connect(combo,SIGNAL(currentIndexChanged(QString)),this,SLOT(comboChanged(QString)));//設(shè)置自動(dòng)補(bǔ)全提示,內(nèi)容為前面的itemcombo->setCompleter(new QCompleter(combo->model()));//添加富文本lay->addWidget(edit=new QTextEdit);edit->setText("<table border=1><tr><th>header1</th><th>header2</th></tr>""<tr><td>value1</td><td>value2</td></tr>""<tr><td>value3</td><td>value4</td></tr>""</table>""<br />""<img src=../aaa.jpg></img>");lay->addWidget(edit1=new QTextEdit);connect(edit1,&QTextEdit::textChanged,[&](){qDebug() << edit1->toPlainText();});//添加組lay->addWidget(group=new QGroupBox("some items"));//水平布局QHBoxLayout* layout;//把組的布局設(shè)置為水平布局group->setLayout(layout=new QHBoxLayout);layout->addWidget(new QPushButton("aaaa"));layout->addWidget(new QPushButton("aaaa"));//把組加入到最開(kāi)始的垂直布局里面lay->addWidget(new QGroupBox);//滑塊QSlider* slider;lay->addWidget(slider=new QSlider(Qt::Horizontal));//設(shè)置滑塊的最小值slider->setMinimum(0);//設(shè)置滑塊的最大值slider->setMaximum(100);//spinbox類(lèi)似于滑塊,不過(guò)其會(huì)顯示值QSpinBox* spinBox;lay->addWidget(spinBox=new QSpinBox);spinBox->setMaximum(100);spinBox->setMinimum(0);//槽函數(shù),把slider點(diǎn)的值給spinBoxconnect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));lay->addWidget(new QDateTimeEdit);//LCDNumber顯示LCD數(shù)字QLCDNumber* number;lay->addWidget(number=new QLCDNumber(10));//顯示12345number->display(12345);//顯示風(fēng)格number->setSegmentStyle(QLCDNumber::Flat); }void MyWidget::comboChanged(const QString &str) {qDebug() << "combo value is " << str; }int main(int argc,char** argv) {QApplication app(argc,argv);MyWidget w;w.show();return app.exec(); }我已經(jīng)對(duì)其進(jìn)行了解釋。
然后接下來(lái)我們看看顯示效果,有點(diǎn)逗,敬請(qǐng)諒解。
?
總結(jié)
- 上一篇: mysql心得体会一百字_MYSQL C
- 下一篇: python子图之间的距离_python