• 【Qt】常见控件


    按钮组

    QPushButton 常用按钮

    QToolButton 工具按钮: 用于显示图片

    • 如果想显示文字:修改风格:toolButtonStyle =>选择TextBesideIcon
    • 凸起风格:autoRaise选中即可

    radioButton 单选按钮 => 多个按钮通常配合Group Box组件一起使用

    • 设置默认选中的值:ui->按钮名字->setChecked(true);
    //设置单选按钮 男默认选中
    ui->rBtnMan->setChecked(true);
    
    //选中女后 打印信息
    connect(ui->rBtnWoman,&QRadioButton::clicked,[=](){
        qDebug() << "选中了女了!";
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    image-20231005094944405


    checkbox:多选按钮,监听状态。2表示选中 1表示半选 0表示未选中,通常配合group box使用

    开启半选状态

    image-20231005095208104

    点一下:半选 再点一下:选中


    //多选按钮  2是选中  0是未选中 1是半选 
    connect(ui->cBox,&QCheckBox::stateChanged,[=](int state){
        qDebug() << state;
    });
    
    • 1
    • 2
    • 3
    • 4

    stateChanged有一个int参数,所以需要在lambda当中接收


    QListWidget列表容器

    QListWidgetItem * item = new QListWidgetItem("锄禾日当午");
    //将一行诗放入到listWidget控件中
    ui->listWidget->addItem(item);
    item->setTextAlignment(Qt::AlignHCenter); //设置水平居中
    
    • 1
    • 2
    • 3
    • 4

    image-20231005100626640


    方式2

    QStringList list ; 
    list << "锄禾日当午" << "旱地和下土" << "谁知盘中餐"<< "粒粒皆辛苦";
    ui->listWidget->addItems(list);
    
    • 1
    • 2
    • 3

    image-20231005100729302


    TreeWidget树控件

    1.设置头 2.创建根节点 3.添加根节点到树控件上 4.添加子节点

    //设置水平方向的头
    ui->treeWidget->setHeaderLabels(QStringList()<< "英雄"<< "英雄介绍");//QStringList()里面QString对象,里面重载了<<
    
    QTreeWidgetItem * liItem = new QTreeWidgetItem(QStringList()<< "力量");
    QTreeWidgetItem * minItem = new QTreeWidgetItem(QStringList()<< "敏捷");
    QTreeWidgetItem * zhiItem = new QTreeWidgetItem(QStringList()<< "智力");
    
    
    //加载顶层的节点
    ui->treeWidget->addTopLevelItem(liItem);
    ui->treeWidget->addTopLevelItem(minItem);
    ui->treeWidget->addTopLevelItem(zhiItem);
    
    //追加子节点
    QStringList heroL1;
    heroL1 << "刚被猪" << "前排坦克,能在吸收伤害的同时造成可观的范围输出";
    QTreeWidgetItem * l1 = new QTreeWidgetItem(heroL1);
    liItem->addChild(l1);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    image-20231005100930936


    TableWidget 表格控件

    设置列数=>设置水平表头=>设置行数=>设置正文

    //设置列数
    ui->tableWidget->setColumnCount(3);
    
    //设置水平方向表头
    ui->tableWidget->setHorizontalHeaderLabels(QStringList()<<"姓名"<< "性别"<< "年龄");
    
    //设置行数
    ui->tableWidget->setRowCount(5);
    
    //设置正文
    //ui->tableWidget->setItem(0,0, new QTableWidgetItem("亚瑟")); //行数 列数 QTableWidgetItem对象地址
    QStringList nameList;
    nameList<< "亚瑟"<< "赵云"<< "张飞"<< "关羽" << "花木兰";
    
    QList<QString> sexList;
    sexList << "男"<< "男"<< "男"<< "男"<< "女";
    
    for(int i = 0 ; i < 5 ;i ++)	
    {
        int col = 0;
        ui->tableWidget->setItem(i,col++, new QTableWidgetItem(nameList[i]));
        ui->tableWidget->setItem(i,col++, new QTableWidgetItem(sexList.at(i)));
        //int 转 QString  : QString::number
        ui->tableWidget->setItem(i,col++, new QTableWidgetItem( QString::number(i+18)));
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25

    image-20231005101146687


    其它控件介绍

    下拉框

    image-20231005101702218

    ui->comboBox->addItem("奔驰"); //0
    ui->comboBox->addItem("宝马");//1
    ui->comboBox->addItem("拖拉机");//2
    
    //点击按钮 选中拖拉机选项
    connect(ui->btn_select,&QPushButton::clicked,[=](){
        //ui->comboBox->setCurrentIndex(2); //拖拉机是2号
        ui->comboBox->setCurrentText("拖拉机");
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    image-20231005101843563


    QLabel显示图片和动图

    image-20231005102054168

    //利用QLabel显示图片
    ui->image_lable->setPixmap(QPixmap(":/file/image/cat.png"));
    
    //利用QLabel显示 gif动态图片
    QMovie * movie = new QMovie(":/file/gif/1.gif");
    ui->move_lable->setMovie(movie);
    //播放动图
    movie->start();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    image-20231005102738271


    自定义控件封装

    目标:实现功能,改变数字,滑动条跟着移动 || 滑动条移动,数字变化

    第一步:添加新文件 -Qt-设计师界面类 =>选择widget 会自动生成 (.h .cpp .ui)

    第二步:在生成的ui文件当中设计 Q S p i n B o x QSpinBox QSpinBox Q S l i d e r QSlider QSlider两个控件

    image-20231005104633752

    第三步:在mainWindow.ui文件当中,使用Widget当中使用自定义控件:拖拽一个Widget,点击提升为=>输入提升的类名称=>全局包含=>添加=>提升

    image-20231005104843119


    smallwidget.h

    提供两个函数:

    //设置数字
    void setNum(int num);
    //获取数字
    int getNum();
    
    • 1
    • 2
    • 3
    • 4

    smallwidget.cpp

    实现上述的两个函数:

    //设置数字
    void smallwidget::setNum(int num)
    {
        ui->spinBox->setValue(num);
    }
    
    //获取数字
    int smallwidget::getNum()
    {
        return ui->spinBox->value();
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在构造函数当中:

    //QSpinBox移动 QSlider跟着移动
    void(QSpinBox:: * spSignal )(int) = &QSpinBox::valueChanged;
    connect(ui->spinBox , spSignal , ui->horizontalSlider , &QSlider::setValue);
    
    //QSlider滑动  QSpinBox数字跟着改变
    connect(ui->horizontalSlider, &QSlider::valueChanged,ui->spinBox,&QSpinBox::setValue);
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    widget.cpp的构造函数当中:

    //点击获取  获取当控件当前的值
    connect(ui->btn_get,&QPushButton::clicked , [=](){
        qDebug() << ui->widget->getNum(); 
    });
    
    //设置到一半
    connect(ui->btn_set,&QPushButton::clicked,[=](){
        ui->widget->setNum(50);
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
  • 相关阅读:
    Java多线程(6):锁与AQS(下)
    vite打包失败 - out of memory
    Android通过BluetoothDevice获取蓝牙地址
    为什么面试官狂问八股文?我已经被三家公司问到哑口无言……
    【推荐】web3.0的发展与研究资料合集
    CentOS7 升级OpenSSH9.0全过程和坑
    CTFHub | 弱口令
    java图片转pdf ,pdf 导出
    C#中一种使用临时文件,用完自动销毁的方法
    详解一下马拉车算法 Manache算法 使用c++
  • 原文地址:https://blog.csdn.net/chuxinchangcun/article/details/133937374