gpt4 book ai didi

c++ - 我不知道我的变量是否没有被初始化或其他什么

转载 作者:行者123 更新时间:2023-11-27 22:55:31 26 4
gpt4 key购买 nike

因此,在用 Qt 调试程序后,我意识到调试器认为我没有初始化变量;但是,我从私有(private)类中获取变量进出,使该类成为指针,但似乎什么也没发生。请让我知道我错过了什么,我在其他程序中遇到了同样的问题,但我不知道是我还是程序问题。

代码如下:

主要内容:

#include "selectionarea.h"
#include <QApplication>
#include <QtWidgets>


int main(int argc, char *argv[])
{
QApplication app(argc, argv);

// QMainWindow *win = new QMainWindow();

QSize winsize(500,500);
SelectionArea area;

area.setStartingLocX(0);
area.setStartingLocY(0);
area.setLength(300);
area.setWidth(300);


area.resize(winsize);
area.show();


return app.exec();
}

选择区域.cpp

#include "selectionarea.h"
#include <QPainter>
#include <QDebug>
#include <QLabel>


SelectionArea::SelectionArea()
{


}

void SelectionArea::paintEvent(QPaintEvent *)
{

QRect rectangle(getStartingLocx(), getStartingLocy(),
getWidth(), getLength());

/*QRegion Constructs a paint event object with the
* region that needs to be updated. The region is
* specified by paintRegion.*/

QPainter painter(this);
painter.setPen(QPen(Qt::SolidPattern,
2.0,
Qt::SolidLine,
Qt::FlatCap,
Qt::MiterJoin));
painter.drawRect(rectangle);

}

void SelectionArea::setStartingLocX(int x)
{
x=StartingLocX;
qDebug() <<x<<" "<<StartingLocX;

}
int SelectionArea::getStartingLocx()
{
return StartingLocX;
}

void SelectionArea::setStartingLocY(int y)
{
y=StartingLocY;
qDebug() <<y<<" "<<StartingLocY;
}

int SelectionArea::getStartingLocy()
{
return StartingLocY;
}

void SelectionArea::setWidth(int w)
{
w=Width;
qDebug() <<w<<" "<<Width;
}

int SelectionArea::getWidth()
{
return Width;
}

void SelectionArea::setLength(int l)
{
l=Length;
}

int SelectionArea::getLength()
{
return Length;
}

和selectionarea.h

#ifndef SELECTIONAREA_H
#define SELECTIONAREA_H

#include <QPixmap>
#include <QLabel>
#include <QRect>

class SelectionArea : public QLabel
{
int StartingLocX;
int StartingLocY;
int Length;
int Width;

public:

SelectionArea();
~SelectionArea()
{

}

void setStartingLocX(int);
void setStartingLocY(int);
void setLength(int);
void setWidth(int);

int getStartingLocx();
int getStartingLocy();
int getWidth();
int getLength();

virtual void paintEvent(QPaintEvent *);



};

#endif // SELECTIONAREA_H

请原谅我的含糊。

更新:应用程序输出是0 00 00 0

然后显示窗口。

最佳答案

让我的评论成为答案

你的 setter 函数实际上应该是这样的:

void SelectionArea::setStartingLocX(int x)
{
StartingLocX = x;
}

因为你用x的值初始化了类成员变量StartingLocX(其他setter函数也一样)。在您的函数版本中,您执行相反的操作,以便您的类成员变量保持未初始化状态。

关于c++ - 我不知道我的变量是否没有被初始化或其他什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33499234/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com