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 &

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

}

运行结果:

 

目录
相关文章
ly~
|
存储 算法 编译器
游戏开发中,C 语言的性能优势体现在哪些方面?
在游戏开发中,C 语言凭借其对硬件的直接访问和内存操作的精准控制,能够显著提升性能。它允许开发者手动管理内存,优化数据存储和读取,充分利用显卡等硬件资源,实现流畅的图形渲染和音效处理。作为一种接近底层的语言,C 语言具有高效的执行速度,适用于物理引擎和碰撞检测等高性能需求模块,并且提供了丰富的运算符和数据类型,便于实现高效的算法。此外,C 语言代码具有良好的可移植性和跨平台性,支持多种操作系统和硬件平台,减少了多平台发布的开发成本。编译器提供的优化选项和手动代码优化的灵活性进一步提升了游戏的整体性能。
ly~
458 5
|
安全 数据处理 C++
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
【Qt 底层之事件驱动系统】深入理解 Qt 事件机制:主事件循环与工作线程的交互探究,包括 QML 的视角
3309 3
|
算法 API 图形学
【Qt 学习笔记】QWidget的geometry属性及window frame的影响
【Qt 学习笔记】QWidget的geometry属性及window frame的影响
1023 2
|
前端开发 JavaScript 机器人
从零开始构建一个聊天机器人
【8月更文挑战第7天】构建聊天机器人是一个涉及多个步骤和技术的复杂过程。从前期准备到实际部署,每一步都需要仔细规划和执行。通过不断学习和实践,你可以逐步掌握构建聊天机器人的技巧和方法,为企业创造更大的价值。
|
网络协议 网络架构
计算机网络中MSS和MTU的区别
【4月更文挑战第11天】
1983 0
计算机网络中MSS和MTU的区别
|
Linux 图形学
深入理解Qt定时器:QTimer的魅力与挑战(一)
深入理解Qt定时器:QTimer的魅力与挑战
8052 0
网络字节序和主机序(大端和小端)详细解释--通过封装IP协议头去理解网络字节序
网络字节序和主机序(大端和小端)详细解释--通过封装IP协议头去理解网络字节序
1525 1
|
SQL 关系型数据库 MySQL
本地数据库 sqlite3 编译和使用
本地数据库 sqlite3 编译和使用
672 0
本地数据库 sqlite3 编译和使用
|
开发者 Windows
windows | windows11打开手机app
手机上面用习惯了app,那么我们电脑上面可以使用吗?肯定是可以的啦!不用模拟器!
391 0
windows | windows11打开手机app
|
JSON 数据格式
QT 给http服务器发送GET/POST请求并接收返回值
QT 给http服务器发送GET/POST请求并接收返回值
QT 给http服务器发送GET/POST请求并接收返回值