您的位置:首页 > 编程语言 > Qt开发

qt控件基本应用

2016-04-27 10:32 609 查看
Qt里面有很多控件,让我们来看一些常用控件。

首先是对pro文件的配置

 HEADERS += \

MyWidget.h

SOURCES += \

MyWidget.cpp

QT+=widgets gui

CONFIG += c++11

因为要用到lambda所以要加一个CONFIG+=c++11

下面是MyWidget.h

[cpp]
view plain
copy

#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

 

[cpp]
view plain
copy

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

我已经对其进行了解释。

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

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: