以每个正方形为对象显示棋盘格-C++;QT 我是QT新手,但不是太C++。我正在尝试创建一个棋盘格/棋盘,其中每个方块都是一个对象。我想弄清楚的是如何让每个正方形对象成为我声明的board对象的一部分,并在屏幕上显示它。我可以在主类中使用MyWidget.show()在屏幕上显示小部件。但我想做一些类似Board.show()的事情,并显示属于该类的所有方形对象(具有高度、宽度和颜色)。对于代码,我尝试了什么都没有出现,尽管我能够得到一个方块来显示,但它不在board类中
main.cpp以每个正方形为对象显示棋盘格-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(); } #包括 #包
#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)代码>
resize()
)(这个);-将square设置为boardI的子元素,我做了更改,并且还将构造函数参数更改为square(QWidget*parent=0);但还是没用,对不起。这是不对的@blueskin right about Square*Square=新的Square(此)谢谢。1和2是钥匙。谢谢你的其他建议!