2.QLabel,QPushButton,QLineEdit,QComboBox,QCheckBox,QRadioButton,QTextEdit,QTextBrowser,QGroupBox,QSl
2? 添加新文件(選擇C++Class)
| MyWidget.h |
| #ifndef MYWIDGET_H #define MYWIDGET_H ? #include <QWidget> #include <QTextEdit> class MyWidget : public QWidget { ??? Q_OBJECT public: ??? explicit MyWidget(QWidget *parent = 0); ? ??? QTextEdit* _edit; ? signals: ? public slots: ??? void slotComboBoxIndexChanged(const QString&); }; ? #endif // MYWIDGET_H |
| 05Controls.pro文件的內容 |
| HEADERS += \ ??? MyWidget.h ? SOURCES += \ ??? MyWidget.cpp QT += widgets gui CONFIG += C++11 |
| MyWidget.cpp |
| #include "MyWidget.h" #include <QApplication> ? #include <QLabel>???????? // disply static text, or image #include <QPushButton> #include <QLineEdit>????? // single line ? #include <QComboBox>????? //下拉選 #include <QCheckBox>????? //復選框 #include <QRadioButton>?? //單選按鈕 #include <QTextEdit>????? // multi lines, rich text #include <QTextBrowser>?? // readonly textedit #include <QGroupBox> #include <QSlider>??????? // 模擬方式顯示數值 #include <QSpinBox>?????? // 數字 #include <QDateEdit> #include <QTimeEdit> #include <QDateTimeEdit> #include <QTabWidget>???? // 不介紹,不算控件 #include <QCompleter> #include <QHBoxLayout>??? //布局控件 #include <QDebug>???????? //這里用于測試用 #include <QPixmap> #include <QVBoxLayout> #include <QLCDNumber> ? MyWidget::MyWidget(QWidget *parent) : ??? QWidget(parent) { ??? QVBoxLayout* lay = new QVBoxLayout(this); ??? QLabel* label; ??? QComboBox* combo; ??? QPushButton* button; ??? QRadioButton* radio; ??? QTextEdit* edit; ??? QGroupBox* group; ? ??? //說明可以通過編寫樣式的方式修改GUI中字體的樣式 ??? lay->addWidget(label = new QLabel("<a href=www.baidu.com>百度</a>")); ??? //通過下面一句在lable上添加一個圖片,當加了下面一句之后,上面的baidu字就會被覆蓋 ??? //label->setPixmap(QPixmap("../aaa.png")); ? ??? //當選中了lable之后會,輸出字符串 ??? connect(label, &QLabel::linkActivated, [](QString str){ ??????? qDebug() << str; ??? }); ? ??? lay->addWidget(button = new QPushButton("Button")); ??? //為button添加樣式 ??? button->setStyleSheet("QPushButton {font:bold 16px; color:red; padding:5px}"); ? ??? lay->addWidget(radio = new QRadioButton("Radio")); ??? radio->setStyleSheet("QRadioButton {font:bold 16px; color:red; padding:5px}"); ??? //為單選按鈕添加事件,true或者false ??? connect(radio, &QRadioButton::clicked, [](bool v){ ??????? qDebug() << v; ??? }); ? ??? lay->addWidget(new QCheckBox("check box")); ??? //添加下拉選 ??? lay->addWidget(combo = new QComboBox()); ??? combo->addItem("Select item1"); ??? combo->addItem("Select item2"); ??? //設置下拉選可以被編輯 ??? combo->setEditable(true); ??? //當下拉選selectChanged之后,用信號槽進行處理 ??? connect(combo, SIGNAL(currentIndexChanged(QString)), this, SLOT(slotComboBoxIndexChanged(QString))); ??? combo->setCompleter(new QCompleter(combo->model())); ? ??? //說明多行文本框之中可以使用html標簽頁面 ??? lay->addWidget(edit = new QTextEdit); ??? edit->setText("<table border=1><tr><th>head1</th><th>head2</th></tr>" ????????????????? "<tr><td>value1</td><td>value2</td></tr>" ????????????????? "<tr><td>value3</td><td>value4</td></tr>" ????????????????? "</table><br>" ????????????????? "<img src=../aaa.png></img>"); ??? _edit = edit; ??? connect(edit, &QTextEdit::textChanged, [&](){ ???? //?? QTextEdit* edit = (QTextEdit*)this->sender(); ??????? qDebug() << _edit->toPlainText(); ??? }); ??? //設置豎直方向上有水平滾動條 ??? edit->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded); ??? //設置水平方向上沒有滾動條 ??? edit->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); ? ??? lay->addWidget(group = new QGroupBox("Some items")); ??? QHBoxLayout* hBoxLay; ??? group->setLayout(hBoxLay = new QHBoxLayout); ??? hBoxLay->addWidget(new QPushButton("aaaa")); ??? hBoxLay->addWidget(new QPushButton("aaaa")); ? ??? QSlider* slider; ??? QSpinBox* spinBox; ? ??? lay->addWidget(slider = new QSlider(Qt::Horizontal)); ??? slider->setMaximum(100); ??? slider->setMinimum(0); ? ??? lay->addWidget(spinBox = new QSpinBox); ??? spinBox->setMaximum(100); ??? spinBox->setMinimum(0); ? ??? connect(slider, SIGNAL(valueChanged(int)), spinBox, SLOT(setValue(int))); ??? connect(spinBox, SIGNAL(valueChanged(int)), slider, SLOT(setValue(int))); ? ??? lay->addWidget(new QDateTimeEdit); ? ??? //設置LCD樣式的顯示狀態 ??? QLCDNumber* lcd; ??? lay->addWidget(lcd = new QLCDNumber(10)); ??? lcd->display(12345); ??? lcd->setMode(QLCDNumber::Hex); ??? lcd->setSegmentStyle(QLCDNumber::Outline); } ? void MyWidget::slotComboBoxIndexChanged(const QString &str) { ??? qDebug() << "slotComboBoxIndexChanged" << str; } ? int main(int argc, char** argv) { ??? QApplication app(argc, argv); ? ??? MyWidget w; ??? w.show(); ? ??? return app.exec(); } |
| 運行結果:
|
?
總結
以上是生活随笔為你收集整理的2.QLabel,QPushButton,QLineEdit,QComboBox,QCheckBox,QRadioButton,QTextEdit,QTextBrowser,QGroupBox,QSl的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 1QPushButton的使用,QLin
- 下一篇: 支付宝怎样转账