【发布时间】:2015-02-23 19:01:08
【问题描述】:
我目前正在使用 QT 和 MSVC 13 编译器开发 gui。 在设置网格时,我遇到了 QWidget 错误
C:\Users\Gaz\Documents\CS22510\simsquare.h:15: error: C2248: 'QWidget::operator =' : cannot access private member declared in class 'QWidget'
在头文件中
#ifndef SIMSQUARE_H
#define SIMSQUARE_H
#include <QWidget>
class SimSquare : public QWidget
{
Q_OBJECT
public:
SimSquare(QWidget *parent = 0);
~SimSquare();
protected:
void PaintEvent(QPaintEvent *);
};
#endif // SIMSQUARE_H
这是cpp文件
#include "simsquare.h"
#include <QtGui>
SimSquare::SimSquare(QWidget *parent) : QWidget(parent)
{
QPalette palette(Square::palette());
palette.setColor(Qt::white);
setPalette(palette);
}
void SimSqaure::PaintEvent(QPaintEvent *){
QPainter painter(this);
painter.setRenderHint(QPainter::Antialiasing);
painter.setBrush(Qt::white, Qt::SolidPattern);
painter.drawRect(10,15,80,90);
}
SimSquare::~SimSquare()
{
}
这是在
中引用的#include "simulation.h"
#include "ui_simulation.h"
#include <QVector>
Simulation::Simulation(QWidget *parent) : QMainWindow(parent),
ui(new Ui::Simulation)
{
simLayout = new SimBoard(this, 8);
square = new SimSquare(this);
for(int x =0; x<8; x++){
for(int y =0; y<8; y++){
//square = new SimSquare();
squaresVec.append(&square);
simLayout->add_widget(&square);
}
}
this->setLayout(simLayout);
ui->setupUi(this);
}
Simulation::~Simulation()
{
delete ui;
}
感谢您提供的任何帮助。
【问题讨论】:
-
QObjects 不能被复制。
-
那么我在哪里做那个,我认为它可能是 square = SimSqaure(this),但我对 SimLayout 做同样的事情,这是一个 QGridLayout,没有遇到任何问题
-
也许在我们看不到的代码中。我不确定
&square的任何一种情况是否正确,它已经是一个指针。您真的想要在矢量和布局中包含 64 个相同的对象吗? -
啊,这是别人的建议。它应该创建一个 8x8 网格,因此使用了矢量,以便在发生变化时我可以轻松地重置网格的每个正方形。我给出的代码是 SimSquare 目前唯一使用过的地方
-
哦,原来 square 不存在,它在 for 循环中,我忘了我移动它来尝试修复它
标签: c++ qt visual-c++ qwidget