在我的主窗口中,我创建了一个名为PieceButton的自定义小部件的2d QVector。我现在想要从一个名为puzzle的不同窗口访问2d QVector。我无法连接2个表单进行数据传输。我在2d QVector填充之前创建了我正在使用的拼图,但是我所看到的一切都说明了连接语句进入拼图的构造函数(第二个窗口),这意味着向量需要准备好之前这个难题就是创造出来的。
我也尝试将connect函数放入一个在主窗口内调用的新函数,但是数据仍然没有传输,所以我把它放回到构造函数中;但这是更好的方法吗?
mainwindow.cpp
QVector<QVector<PieceButton*>> tilesVec;
...
void MainWindow::on_solveButton_clicked(){
for(int i = 0; i < 3; i++)
{
x = 0;
QVector<PieceButton*> row;
for(int j = 0; j < 3; j++)
{
...
PieceButton *piece = new PieceButton(myPuzzle);
...
row.push_back(piece);
}
tilesVec.push_back(row);
}
myPuzzle->show();
emit sendTileData(tilesVec);
}
mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include "puzzle.h"
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
signals:
void sendTileData(QVector<QVector<PieceButton*>> tilesVec);
private slots:
void on_solveButton_clicked();
private:
Ui::MainWindow *ui;
Puzzle *myPuzzle;
};
#endif // MAINWINDOW_H
puzzle.cpp
QVector<QVector<PieceButton*>> tiles;
Puzzle::Puzzle(QWidget *parent) :
QDialog(parent),
ui(new Ui::Puzzle)
{
ui->setupUi(this);
this->setWindowTitle("Puzzle");
resize(QDesktopWidget().availableGeometry(this).size() * 0.7);
MainWindow *main;
connect(main, SIGNAL(sendTileData(QVector<QVector<PieceButton*>>)),
this, SLOT(getTileData(QVector<QVector<PieceButton*>>)));
int count = tiles.count();
qDebug("%d", count); //this should be greater than 0, but is 0
}
Puzzle::~Puzzle()
{
delete ui;
}
void Puzzle::getTileData(QVector<QVector<PieceButton*>> sentTilesVec)
{
tiles = sentTilesVec;
}
puzzle.h
namespace Ui {
class Puzzle;
}
class Puzzle : public QDialog
{
Q_OBJECT
public:
explicit Puzzle(QWidget *parent = 0);
~Puzzle();
void connecting();
public slots:
void getTileData(QVector<QVector<PieceButton*>> tilesVec);
private slots:
void testSlot();
private:
Ui::Puzzle *ui;
};
我试图只为您提供代码的相关部分。问题出在puzzle.cpp中的connect语句中,但我对如何解决它感到很遗憾。任何方向都会受到赞赏。