qt实现扫雷三:对话框设计

小编 2026-07-07 阅读:1925 评论:0
qt实现扫雷三:对话框设计 对话框实现扫雷雷区大小和雷数的设置 问题总结 1、提供给上层对象接口,设置三个参数或获取三个参数 2、继承自QDialog类 3、定义槽函数时,需要有宏,类继承自Q...

qt实现扫雷三:对话框设计

对话框实现扫雷雷区大小和雷数的设置

问题总结

1、提供给上层对象接口,设置三个参数或获取三个参数
2、继承自QDialog类
3、定义槽函数时,需要有宏,类继承自QObject时需要有这个宏定义

Q_OBJECT

4、以下语句可以设置LineEdit的输入范围,限制输入整数类型需要引入头文件

   #include <QIntValidator>
   column_edit->setValidator(new QIntValidator(0, COLUMN, this));

5、使用调试打印命令

#include <QDebug>
qdebug()<<\" \"; 

6、使用消息对话框

#include <QMessageBox>
QMessageBox::information(NULL, \"hello\", \"illegal input\",
                                         QMessageBox::Ok, QMessageBox::Ok);

7、程序运行效果如下:
\"在这里插入图片描述\"

头文件

1,定义设置雷区参数对话框类

class thunder_dialog : public QDialog
{
    Q_OBJECT

public:
    thunder_dialog(int x = 9, int y = 9, int num = 10, QWidget *parent = 0);

    //获取行数
    int getRow();
    //获取列数
    int getColumn();
    //获取雷数
    int getNumber();
    //设置行数,列数,雷数参数
    void setParameters(int x, int y, int num);
private slots:
    //确定按钮点击后响应事件的槽函数
    void confirmButtonClicked();

private:
    QPushButton *confirm;
    QPushButton *concel;
    QLabel *row_label;
    QLabel *column_label;
    QLabel *number_label;
    QLineEdit *row_edit;
    QLineEdit *column_edit;
    QLineEdit *number_edit;

private:
    int row;
    int column;
    int number;
};

源文件

thunder_dialog::thunder_dialog(int x, int y, int num, QWidget *parent)
    :row(x), column(y), number(num), QDialog(parent)
{
    setFixedSize(200, 150);
    confirm = new QPushButton(this);
    confirm->setGeometry(50, 120, 50, 20);
    confirm->setText(\"confirm\");
    connect(confirm, SIGNAL(clicked()), this, SLOT(confirmButtonClicked()));

    concel = new QPushButton(this);
    concel->setGeometry(100,120,50,20);
    concel->setText(\"cancel\");
    connect(concel, SIGNAL(clicked()), this, SLOT(close()));

    row_label = new QLabel(this);
    row_label->setText(\"行数:\");
    row_label->setGeometry(50,30,50,20);

    column_label = new QLabel(this);
    column_label->setText(\"列数:\");
    column_label->setGeometry(50,60,50,20);

    number_label = new QLabel(this);
    number_label->setText(\"雷数:\");
    number_label->setGeometry(50,90,50,20);

    row_edit = new QLineEdit(this);
    row_edit->setGeometry(100,30,50,20);
    row_edit->setText(QString::number(row));
    row_edit->setValidator(new QIntValidator(0, ROW, this));

    column_edit = new QLineEdit(this);
    column_edit->setGeometry(100,60,50,20);
    column_edit->setText(QString::number(column));
    column_edit->setValidator(new QIntValidator(0, COLUMN, this));

    number_edit = new QLineEdit(this);
    number_edit->setGeometry(100,90,50,20);
    number_edit->setText(QString::number(number));
    number_edit->setValidator(new QIntValidator(0, ROW * COLUMN, this));
}

int thunder_dialog::getRow()
{
    return row;
}

int thunder_dialog::getColumn()
{
    return column;
}

int thunder_dialog::getNumber()
{
    return number;
}

void thunder_dialog::setParameters(int x, int y, int num)
{
    row = x;
    column = y;
    number = num;
}

void thunder_dialog::confirmButtonClicked()
{
    int x = row_edit->text().toInt();
    int y = column_edit->text().toInt();
    int z = number_edit->text().toInt();

    if(x <= 0 || x >= ROW || y <= 0 || y >= COLUMN || z < 0 || z > x * y)
    {
        QMessageBox::StandardButton rb = QMessageBox::information(NULL, \"hello\", \"illegal input\",
                                     QMessageBox::Ok, QMessageBox::Ok);
        if(rb == QMessageBox::Ok)
        {
            return;
        }else
        {

        }
        return;
    }
    qDebug()<<x<<\" \"<<y<<\" \"<<z;
    row = x;
    column = y;
    number = z;
    close();
}
版权声明

本文仅代表作者观点,不代表百度立场。
本文系作者授权百度百家发表,未经许可,不得转载。

热门文章
  • Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering

    Sequential Monte Carlo Methods (SMC) 序列蒙特卡洛/粒子滤波/Bootstrap Filtering
    Problem Statement 我们考虑一个具有马尔可夫性质、非线性、非高斯的状态空间模型(State Space Model):对于一个时间序列上的观测结果{yt,t∈N}\\{ y_t , t \\in N \\}{yt​,t∈N},我们认为每个观测结果yty_tyt​的生成依赖于一个无法直接观察的隐变量xt∈{xt,t∈N}x_t \\in \\{x_t , t \\in N \\}xt​∈{xt​,t∈N},即:p(...
  • 机房智能化温湿度解决方式之POE供电以太网温湿度传感器

    机房智能化温湿度解决方式之POE供电以太网温湿度传感器
    机房智能化温湿度解决方式之POE供电以太网温湿度传感器 北京盈创力和电子科技有限公司 智能型TCP网口温湿度记录仪 北京IP网络温湿度记录仪厂家,北京盈创力和 北京智能型TCP网口温湿度记录仪IP网络温湿度记录仪是一种新型的基于TCP/IP协议双绞线以太网标准温湿度采集模块,利用它可以实现现场温度值、相对湿度值的采集,同时利用其自身的RJ45通信接口可以方便地和机房监控主机或交换机集线器进行联网。 工作于-40℃~85℃工业级带...
  • Hive 系统函数及示例

    Hive 系统函数及示例
    查看所有系统函数 show functions; 函数分类 内置函数【系统函数】 数学函数: floor、round、ceil、cos、log2等 字符串函数: length、reverse、trim、lower、get_json_object、repeat等 收集函数: size 转换函数: cast 日期函数: year、month、datediff、date、date_add等 条件函数: coalesce、case…w...
  • CSRF的原理和防范措施

    CSRF的原理和防范措施
    a)攻击原理:i.用户C访问正常网站A时进行登录,浏览器保存A的cookieii.用户C再访问攻击网站B,网站B上有某个隐藏的链接或者图片标签会自动请求网站A的URL地址,例如表单提交,传指定的参数iii.而攻击网站B在访问网站A的时候,浏览器会自动带上网站A的cookieiv.所以网站A在接收到请求之后可判断当前用户是登录状态,所以...
  • HTTP状态保持的原理

    HTTP状态保持的原理
    a)在用户登录之后,浏览器返回响应的时候会在响应中添加上cookieb)浏览器接收到cookie之后会自动保存c)当用户再次请求同一服务器中的其他网页的时候,浏览器会自动带上之前保存的cookied)服务接收到请求之后可以请 request 对象中取到cookie 判断当前用户是否登录  Http是无状态的,就是连接时数据互通,关闭后...
标签列表