#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QInputDialog>
#include <QLabel>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
signals:
void enter();
private slots:
void on_Generate_clicked();
public slots:
void gen();
void lb();
private:
Ui::MainWindow *ui;
int wid,hei;
QVector<QVector<QPushButton*>> df;
QLabel* lbl;
};
#endif // MAINWINDOW_H
//MAINWINDOW_CPP
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QLabel>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
QPushButton* f = ui->Generate;
ui->Generate->move((width()-f->width())/2,f->pos().y());
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::on_Generate_clicked()
{
wid = QInputDialog::getInt(this,"Widht","Widht",0,0,70);
hei = QInputDialog::getInt(this,"Height","Height",0,0,70);
emit enter();
}
void MainWindow::gen(){
for(int i=0; i < wid;i++){
df.push_back(QVector<QPushButton*>());
for(int j=0;j<hei;j++){
df[i].push_back(new QPushButton(this));
df[i][j]->setGeometry(20*i,20*j+30,20,20);
df[i][j]->show();
QObject::connect(df[i][j], &QPushButton::clicked, this, &MainWindow::lb);
}
}
}
void MainWindow::lb(){
QObject *senderObj = sender();
qDebug() << senderObj->objectName();
}
//main
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
QObject::connect(&w,&MainWindow::enter,&MainWindow::gen);
return a.exec();
}
I2lmbmRlZiBNQUlOV0lORE9XX0gKI2RlZmluZSBNQUlOV0lORE9XX0gKCiNpbmNsdWRlIDxRTWFpbldpbmRvdz4KI2luY2x1ZGUgPFFJbnB1dERpYWxvZz4KI2luY2x1ZGUgPFFMYWJlbD4KUVRfQkVHSU5fTkFNRVNQQUNFCm5hbWVzcGFjZSBVaSB7IGNsYXNzIE1haW5XaW5kb3c7IH0KUVRfRU5EX05BTUVTUEFDRQoKY2xhc3MgTWFpbldpbmRvdyA6IHB1YmxpYyBRTWFpbldpbmRvdwp7CiAgICBRX09CSkVDVAoKcHVibGljOgogICAgTWFpbldpbmRvdyhRV2lkZ2V0ICpwYXJlbnQgPSBudWxscHRyKTsKICAgIH5NYWluV2luZG93KCk7CnNpZ25hbHM6CiAgICB2b2lkIGVudGVyKCk7CnByaXZhdGUgc2xvdHM6CiAgICB2b2lkIG9uX0dlbmVyYXRlX2NsaWNrZWQoKTsKcHVibGljIHNsb3RzOgogICAgdm9pZCBnZW4oKTsKICAgIHZvaWQgbGIoKTsKcHJpdmF0ZToKICAgIFVpOjpNYWluV2luZG93ICp1aTsKICAgIGludCB3aWQsaGVpOwogICAgUVZlY3RvcjxRVmVjdG9yPFFQdXNoQnV0dG9uKj4+IGRmOwogICAgUUxhYmVsKiBsYmw7Cn07CiNlbmRpZiAvLyBNQUlOV0lORE9XX0gKCi8vTUFJTldJTkRPV19DUFAKI2luY2x1ZGUgIm1haW53aW5kb3cuaCIKI2luY2x1ZGUgInVpX21haW53aW5kb3cuaCIKI2luY2x1ZGUgPFFMYWJlbD4KI2luY2x1ZGUgPFFEZWJ1Zz4KTWFpbldpbmRvdzo6TWFpbldpbmRvdyhRV2lkZ2V0ICpwYXJlbnQpCiAgICA6IFFNYWluV2luZG93KHBhcmVudCkKICAgICwgdWkobmV3IFVpOjpNYWluV2luZG93KQp7CiAgICB1aS0+c2V0dXBVaSh0aGlzKTsKICAgIFFQdXNoQnV0dG9uKiBmID0gdWktPkdlbmVyYXRlOwogICAgdWktPkdlbmVyYXRlLT5tb3ZlKCh3aWR0aCgpLWYtPndpZHRoKCkpLzIsZi0+cG9zKCkueSgpKTsKfQoKTWFpbldpbmRvdzo6fk1haW5XaW5kb3coKQp7CiAgICBkZWxldGUgdWk7Cn0KCgp2b2lkIE1haW5XaW5kb3c6Om9uX0dlbmVyYXRlX2NsaWNrZWQoKQp7CiAgICB3aWQgPSBRSW5wdXREaWFsb2c6OmdldEludCh0aGlzLCJXaWRodCIsIldpZGh0IiwwLDAsNzApOwogICAgaGVpID0gUUlucHV0RGlhbG9nOjpnZXRJbnQodGhpcywiSGVpZ2h0IiwiSGVpZ2h0IiwwLDAsNzApOwogICAgZW1pdCBlbnRlcigpOwp9Cgp2b2lkIE1haW5XaW5kb3c6OmdlbigpewogICAgZm9yKGludCBpPTA7IGkgPCB3aWQ7aSsrKXsKICAgICAgICBkZi5wdXNoX2JhY2soUVZlY3RvcjxRUHVzaEJ1dHRvbio+KCkpOwogICAgICAgIGZvcihpbnQgaj0wO2o8aGVpO2orKyl7CiAgICAgICAgICAgIGRmW2ldLnB1c2hfYmFjayhuZXcgUVB1c2hCdXR0b24odGhpcykpOwogICAgICAgICAgICBkZltpXVtqXS0+c2V0R2VvbWV0cnkoMjAqaSwyMCpqKzMwLDIwLDIwKTsKICAgICAgICAgICAgZGZbaV1bal0tPnNob3coKTsKCiAgICAgICAgICAgIFFPYmplY3Q6OmNvbm5lY3QoZGZbaV1bal0sICZRUHVzaEJ1dHRvbjo6Y2xpY2tlZCwgdGhpcywgJk1haW5XaW5kb3c6OmxiKTsKICAgICAgICB9CgogICAgfQoKCgp9Cgp2b2lkIE1haW5XaW5kb3c6OmxiKCl7CiAgICBRT2JqZWN0ICpzZW5kZXJPYmogPSBzZW5kZXIoKTsKICAgIHFEZWJ1ZygpIDw8IHNlbmRlck9iai0+b2JqZWN0TmFtZSgpOwp9CgovL21haW4KI2luY2x1ZGUgIm1haW53aW5kb3cuaCIKCiNpbmNsdWRlIDxRQXBwbGljYXRpb24+CgppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQp7CiAgICBRQXBwbGljYXRpb24gYShhcmdjLCBhcmd2KTsKICAgIE1haW5XaW5kb3cgdzsKICAgIHcuc2hvdygpOwogICAgUU9iamVjdDo6Y29ubmVjdCgmdywmTWFpbldpbmRvdzo6ZW50ZXIsJk1haW5XaW5kb3c6Omdlbik7CiAgICByZXR1cm4gYS5leGVjKCk7Cn0=