Qt实现简单项目——矩阵生成

         一、说明

二、实例图片

三、操作步骤

一、说明

通过输入行数、列数,在规定范围内生成按钮,组成矩阵,并且可以通过按钮做全选、多选操作,将选中的按钮变色。

二、实例图片

三、操作步骤

1、文件创建

(1)创建工程文件,选择MainWindow类型,并勾选Generate form,生成UI界面图;

(2)创建如图所示界面,用到的控件有Group Box、Line Edit、Push Button、Radio Button、Spin Box及Label,根据个人习惯对齐进行排列并修改名称。

2、程序编写

(1)main.cpp文件不做修改;

(2)mainwindow.h页面的程序如下:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H


#include <QMainWindow>
#include <QPushButton> //Push按钮类
#include <QList> //列表类
#include <QDebug> //QDebug类
#include <QGroupBox>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT


public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();


private slots:

    void slotButtonClicked();//动态创建QPushButton按钮信号槽函数

    void on_pushButton_clicked();

    void on_radioButton_all_clicked();

    void on_radioButton_digit_clicked();

private:
    Ui::MainWindow *ui;
    QList<QPushButton*> btnPushlist;//动态创建按钮的列表
    QPushButton *btnPush;//动态创建按钮指针
    int num;
    int row;
    int col;
   

};
#endif // MAINWINDOW_H

(3)mainwindo.cpp中的程序如下:

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QSpinBox>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
}

MainWindow::~MainWindow()
{
    delete ui;
    //删除QList占用的内存及清空列表
        qDeleteAll(btnPushlist);
        btnPushlist.clear();
}


/*===动态创建QPushButton按钮信号槽函数===*/
void MainWindow::slotButtonClicked()
{

    QPushButton *btn = qobject_cast<QPushButton*>(sender());
    //获取按钮显示文本
    QString text = btn->text();
    //获取按钮对象名称
    QString name = sender()->objectName();
    //do something在这里进行其他事项处理
    qDebug()<<text;//在下方debug中显示出按下按钮显示的文本
    qDebug()<<name;//在下方debug中显示 出按下 按钮的名称
}

//*********************************************************根据输入的行列式生成按钮矩阵
void MainWindow::on_pushButton_clicked()
{
     row=ui->lineEdit->text().toInt();
     col=ui->lineEdit_2->text().toInt();
     qDeleteAll(btnPushlist);
     btnPushlist.clear();

     num=0;
     for(int i=0;i<row;i++)
     {
         for(int j=0;j<col;j++)
         {
             num+=1;
             btnPush=new QPushButton(this);
             btnPush->setParent(this);
             btnPush->show();
             //设置按钮在主对话框的位置
             //  每一个的坐标, 横、纵 、宽度、高度
             btnPush->setGeometry(20+(500/col)*j,20+(500/row)*i,(500/col)-10,(500/row)-10);
             //设置按钮对象名字
             btnPush->setObjectName("btnPush"+QString::number(num));//num正序

             //设置按钮显示文本
             btnPush->setText(QString::number(num));
             //设置初始颜色    snow
             btnPush->setStyleSheet("background-color:rgb(255,255,255)");
             //向QList添加成员项
             btnPushlist.append(btnPush);
             //关联信号槽函数
             connect(btnPushlist.at(i*col+j),SIGNAL(clicked()),this,SLOT(slotButtonClicked()));
         }
       }

}




//*************************************按下全部点胶按钮,变色
void MainWindow::on_radioButton_all_clicked()
{
    for(int m=0;m<row*col;m++)
    {
        QPushButton *  btn1 = btnPushlist.at(m);
        QString name =btn1->objectName();
        btn1->setStyleSheet("background-color:rgb(255,218,185)");//PeachPuff桃红色
    }
}


//**************************************填写起始位置、终止位置,按下数字点胶,变色
void MainWindow::on_radioButton_digit_clicked()
{

    int start=ui->spinBox->value();
    int end=ui->spinBox_2->value();
    if (end>row*col)
        end =row*col;
    //全选所有按钮,变原始颜色
    for(int m=0;m<row*col;m++)
    {
        QPushButton *  btn1 = btnPushlist.at(m);
        QString name =btn1->objectName();
        btn1->setStyleSheet("background-color:rgb(255,255,255)");//先全部变为原始颜色
    }

    //根据需要,将选中的按钮变色
    for(int m=start-1;m<end;m++)//重新填充颜色
    {
        QPushButton *  btn1 = btnPushlist.at(m);
        QString name =btn1->objectName();
        btn1->setStyleSheet("background-color:rgb(255,218,185)");
    }
}

3、运行

运行程序后,将出现如下页面:

(1)输入行数、列数,点击“确定”按钮,将生成对应矩阵;

(2)点击“全选”按钮,生成的矩阵按键将全部变色,即实现全选功能;

(3)在输入框中输入想要选中的范围,点击多选按钮,对应选中的范围将变为桃红色按钮,其他未选中的变回原来的颜色;重新输入数字后,再次点击“多选”按钮,将会重新改变颜色并覆盖原有颜色,实现多选功能;

(4)点击“退出”按钮,将退出该页面。

 


 目标功能实现,结束~

 

 

 

 

 

 

 

 

天气预报是一个非常实用的个人项目,它可以帮助我们及时了解当地的天气情况,帮助我们合理安排日常生活和外出计划。 我的qt个人项目天气预报主要包括以下功能: 1. 实时天气查询:通过调用天气API,可以实时获取当地的天气信息,包括温度、湿度、风力、空气质量等指标。用户可以根据自己的需求选择查询当天或未来几天的天气情况。 2. 城市选择和管理:用户可以通过界面上的搜索功能输入城市名字查询该城市的天气情况。同时,用户还可以通过添加和删除城市的功能,方便地管理自己关注的城市列表。 3. 天气图标和背景:界面上会显示对应的天气图标,如晴天、多云、雨天等,以直观地展示当前的天气情况。同时,根据不同的天气状况,背景图片也会相应地进行变化,增加界面的美观性和可视化效果。 4. 未来天气预测:除了显示当天的天气情况外,我的个人项目还可以提供未来几天的天气预测,帮助用户更全面地了解未来几天的天气变化趋势。 通过这个个人项目,用户可以方便地获取并查看天气信息,从而更好地做出日常生活安排。此外,用户还可以根据天气预报的变化,做出适应性的衣物搭配和外出计划,提高生活效率和便利性。 总之,我的qt个人项目天气预报能够为用户提供准确、及时的天气信息,并通过直观的界面展示,帮助用户做出合理的日常生活安排和外出计划。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值