QT实现扫雷界面(2024.9.18)

发布于:2024-09-19 ⋅ 阅读:(14) ⋅ 点赞:(0)

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPushButton>
#include <QGridLayout>
#include <QLabel>
#include <QVBoxLayout>
#include <QTimer>
#include <QTime>
#include <QLCDNumber>

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

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

protected slots:
    void clicked();
  //  void updateTime();

private:
    Ui::Widget *ui;
    QPushButton *button;
    QVBoxLayout *mainLayout;
    QLabel *label;
    //QTimer *timer;
   // QLCDNumber *lcdNumber;


};
#endif // WIDGET_H

widget.cpp

#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    this->setWindowTitle("扫雷");
   /* // 设置LCD数字显示的大小和模式
    lcdNumber->setDigitCount(8); // 设置显示的数字位数
    lcdNumber->display("00:00:00"); // 初始显示时间*/

    // 创建一个QWidget作为网格布局的容器
    QWidget *gridContainer = new QWidget(this);
    QGridLayout *gridLayout = new QGridLayout(gridContainer);

    // 遍历行和列以创建并添加按钮
    for (int row = 0; row < 16; ++row)
    {
        for (int column = 0; column < 16; ++column)
        {
            QPushButton *button = new QPushButton(); // 注意这里需要添加*来创建指针
            button->setMinimumSize(QSize(40, 40));
            button->setStyleSheet("QPushButton { background-color: gray; }");
            gridLayout->addWidget(button, row, column); // 将按钮添加到网格布局的指定位置
        }
    }

    label = new QLabel(this);
    label->setAlignment(Qt::AlignCenter); // 设置文本对齐
    label->setFrameShape(QLabel::Panel); // 设置框架形状为Panel
    label->setFrameShadow(QLabel::Sunken); // 设置框架阴影为Sunken
    label->setLineWidth(8); // 设置框架线宽为8
    label->setFixedSize(this->width(), 60);


    // 设置主布局为QVBoxLayout,并将label和gridContainer作为子项添加
    mainLayout = new QVBoxLayout(this);
    mainLayout->addWidget(label);
    mainLayout->addWidget(gridContainer);

   /* timer = new QTimer(this);
    // 连接QTimer的timeout信号到updateTime槽
    connect(timer, &QTimer::timeout, this, &Widget::updateTime);
    timer->start(1000); // 设置定时器间隔为1000毫秒(1秒)*/


    // 设置窗口的布局为刚创建的垂直布局
    this->setLayout(mainLayout);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::clicked()
{

}

/*
void Widget::updateTime()
{
    int num = ui->lcdNumber->value();
    num += 1;
    ui->lcdNumber->display(num);
}*/

main.cpp

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

界面效果


网站公告

今日签到

点亮在社区的每一天
去签到