2.QLabel,QPushButton,QLineEdit,QComboBox,QCheckBox,QRadioButton,QTextEdit,QTextBrowser,QGroupBox,QSl


1.新建一个空项目(其它项目 —> QT 项目):

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();

}

运行结果:

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

涂作权的博客

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值