qt控件基本应用
Qt里面有很多控件,讓我們來看一些常用控件。
首先是對pro文件的配置
?HEADERS += \
MyWidget.h
SOURCES += \
MyWidget.cpp
QT+=widgets gui
CONFIG += c++11
因為要用到lambda所以要加一個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://槽函數void comboChanged(const QString&); protected:QTextEdit *edit1; };#endif // MYWIDGET_H下面是MyWidget.cpp
?
#include "MyWidget.h" #include <QApplication> #include <QLabel>//顯示靜態文本或者圖片 #include <QPushButton> #include <QLineEdit>//一行 #include <QComboBox> #include <QCheckBox> #include <QRadioButton> #include <QTextEdit>//富文本 #include <QTextBrowser>//只讀富文本 #include <QGroupBox>//分類框 #include <QSlider> //滑塊 #include <QSpinBox> //數字的 #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);//一個labelQLabel* label;//一個下拉框QComboBox *combo;//一個按鈕QPushButton* button;//一個點選框QRadioButton* radio;//一個富文本QTextEdit* edit;//一個組QGroupBox* group;//Qt里面可以用html來對控件的樣式做變化lay->addWidget(label=new QLabel("<a href='www.baidu.com'>baidu</a>"));//設置按鈕背景圖片label->setPixmap(QPixmap("../bbb.jpg"));//c++11里面的新特性,相對于槽模式,lambda更加方便connect(label,&QLabel::linkActivated,[](QString str){qDebug() << str;});lay->addWidget(button=new QPushButton("Button"));//設置css樣式表,可見qt還是比較強大的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個元素combo->addItem("select item1");combo->addItem("select item2");//設置是否可編輯combo->setEditable(true);//注釋掉的部分是自動補全的提示// combo->setCompleter(new QCompleter(QStringList() << "aaa" << "bbb"));//槽模式,注意在別的地方有相應的函數connect(combo,SIGNAL(currentIndexChanged(QString)),this,SLOT(comboChanged(QString)));//設置自動補全提示,內容為前面的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;//把組的布局設置為水平布局group->setLayout(layout=new QHBoxLayout);layout->addWidget(new QPushButton("aaaa"));layout->addWidget(new QPushButton("aaaa"));//把組加入到最開始的垂直布局里面lay->addWidget(new QGroupBox);//滑塊QSlider* slider;lay->addWidget(slider=new QSlider(Qt::Horizontal));//設置滑塊的最小值slider->setMinimum(0);//設置滑塊的最大值slider->setMaximum(100);//spinbox類似于滑塊,不過其會顯示值QSpinBox* spinBox;lay->addWidget(spinBox=new QSpinBox);spinBox->setMaximum(100);spinBox->setMinimum(0);//槽函數,把slider點的值給spinBoxconnect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));lay->addWidget(new QDateTimeEdit);//LCDNumber顯示LCD數字QLCDNumber* number;lay->addWidget(number=new QLCDNumber(10));//顯示12345number->display(12345);//顯示風格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(); }我已經對其進行了解釋。
然后接下來我們看看顯示效果,有點逗,敬請諒解。
?
總結
- 上一篇: mysql心得体会一百字_MYSQL C
- 下一篇: OC里面的类类型