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);
    //一个label
    QLabel* 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)));
    //设置自动补全提示,内容为前面的item
    combo->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点的值给spinBox
    connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));
    lay->addWidget(new QDateTimeEdit);
    //LCDNumber显示LCD数字
    QLCDNumber* number;
    lay->addWidget(number=new QLCDNumber(10));
    //显示12345
    number->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();
}

我已经对其进行了解释。

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

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值