以每个正方形为对象显示棋盘格-C++;QT 我是QT新手,但不是太C++。我正在尝试创建一个棋盘格/棋盘,其中每个方块都是一个对象。我想弄清楚的是如何让每个正方形对象成为我声明的board对象的一部分,并在屏幕上显示它。我可以在主类中使用MyWidget.show()在屏幕上显示小部件。但我想做一些类似Board.show()的事情,并显示属于该类的所有方形对象(具有高度、宽度和颜色)。对于代码,我尝试了什么都没有出现,尽管我能够得到一个方块来显示,但它不在board类中

以每个正方形为对象显示棋盘格-C++;QT 我是QT新手,但不是太C++。我正在尝试创建一个棋盘格/棋盘,其中每个方块都是一个对象。我想弄清楚的是如何让每个正方形对象成为我声明的board对象的一部分,并在屏幕上显示它。我可以在主类中使用MyWidget.show()在屏幕上显示小部件。但我想做一些类似Board.show()的事情,并显示属于该类的所有方形对象(具有高度、宽度和颜色)。对于代码,我尝试了什么都没有出现,尽管我能够得到一个方块来显示,但它不在board类中,c++,qt,C++,Qt,main.cpp #include <qtgui> #include "square.h" #include "board.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); //Square square; //square.show(); Board board; board.show(); return app.exec(); } #包括 #包

main.cpp

#include <qtgui>
#include "square.h"
#include "board.h"

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    //Square square;
    //square.show();
    Board board;
    board.show();
    return app.exec();
}
#包括
#包括“square.h”
#包括“board.h”
int main(int argc,char*argv[])
{
QApplication应用程序(argc、argv);
//正方形;
//square.show();
董事会;
board.show();
返回app.exec();
}
board.h和board.cpp

#ifndef BOARD_H
#define BOARD_H

#include <QWidget>

class Board : public QWidget
{
public:
    Board();
};

#endif // BOARD_H

#include "board.h"
#include "square.h"

Board::Board()
{
    Square square;
    //square.show();
}
\ifndef BOARD\u H
#定义BOARD_H
#包括
类板:公共QWidget
{
公众:
董事会();
};
#endif//BOARD_H
#包括“board.h”
#包括“square.h”
Board::Board()
{
正方形;
//square.show();
}
square.h和square.cpp

#ifndef SQUARE_H
#define SQUARE_H

#include <QWidget>

class Square : public QWidget
{
public:
    Square();

protected:
    void paintEvent(QPaintEvent *);
};

#endif // SQUARE_H

#include "square.h"
#include <QtGui>

Square::Square()
{
    QPalette palette(Square::palette());
    palette.setColor(backgroundRole(), Qt::white);
    setPalette(palette);
}

void Square::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
    painter.setRenderHint(QPainter::Antialiasing);
    painter.setBrush(QBrush("#c56c00"));
    painter.drawRect(10, 15, 90, 60);
}
#ifndef SQUARE\u H
#定义平方
#包括
类Square:公共QWidget
{
公众:
正方形();
受保护的:
无效油漆事件(QPaintEvent*);
};
#endif//SQUARE_H
#包括“square.h”
#包括
Square::Square()
{
QPalette调色板(正方形::调色板());
setColor(backgroundRole(),Qt::white);
设置调色板(调色板);
}
void Square::paintEvent(QPaintEvent*)
{
油漆工(本);
painter.setRenderInt(QPainter::抗锯齿);
画师:退刀(QBrush(#c56c00”);
画家drawRect(10,15,90,60);
}
再说一次,我是Qt的noob,所以我的大部分代码都是猜测工作,我可以在谷歌上找到什么

  • 用于电路板
  • 对于每个正方形(可能是)
  • 将线路板设置为每个正方形的父级(
    正方形(此);

    代码中出现了一些错误:

  • 您正在堆栈上创建方形对象。在
    Board::Board()
    constructor。当正方形离开构造函数时,它会立即被创建和删除。所以在堆上创建它
  • 正方形需要父对象,因此在创建正方形时请执行
    square=新的square(本)
  • 你的棋盘基本上是一个正方形的集合,所以创建一个 董事会私人成员中的变量
    QVector squaresVec
    班级。现在在Board()构造函数中,创建尽可能多的正方形 必需,并将其插入QGridLayout(同时保存
    squaresVec
    变量中的指针,以备将来使用)。然后使用
    this->setLayout(gridLayout)
  • 此外,您的square小部件没有大小,因此请设置一个大小(只需 使用
    resize()

  • (这个);-将square设置为boardI的子元素,我做了更改,并且还将构造函数参数更改为square(QWidget*parent=0);但还是没用,对不起。这是不对的@blueskin right about Square*Square=新的Square(此)谢谢。1和2是钥匙。谢谢你的其他建议!