C++ 将QString传递给类构造函数会更改新类中的QString
我试图将一个字符串(将文件名保存到图像)传递给类构造函数C++ 将QString传递给类构造函数会更改新类中的QString,c++,qt,C++,Qt,我试图将一个字符串(将文件名保存到图像)传递给类构造函数 // pushbutton function call to open new window void SelectTest::on_upperSideStart_clicked() { QString imageFile = ui->upperSideEdit->text(); uppersidewindow = new upperSideWindow(imageFile, this); upper
// pushbutton function call to open new window
void SelectTest::on_upperSideStart_clicked()
{
QString imageFile = ui->upperSideEdit->text();
uppersidewindow = new upperSideWindow(imageFile, this);
uppersidewindow->show();
}
// new class constructor
upperSideWindow::upperSideWindow(const QString &_imageFile, QWidget *parent) :
QMainWindow(parent),
ui(new Ui::upperSideWindow)
{
ui->setupUi(this);
*image = QImage(_imageFile);
qDebug() << image->size();
}
为什么会发生这种情况?这似乎是调试器的问题。使用:
qDebug() << "image file: " << _imageFile
qDebug()问题:您的程序工作正常吗?查明这是否是调试器问题,或者字符串是否确实发生了更改。另外,您正在使用什么编译器/调试器?发布声明imageFile的代码片段。猜测一下,由于您传递的是对imageFile的引用(而不是副本或共享指针),imageFile将超出范围。程序无法正常工作。当图像打开时,存在SEG故障。我一直在看一个例子,看起来Qt有一些内置类,用于处理我将要研究的文件路径。(我认为不使用转义序列斜杠可能会导致问题。我使用的是Mingw。最初,我尝试传递一个副本,我想看看它是否有区别(它没有)。这是关于我声明imageFile的位置的一个很好的观点,但它似乎不是根。@Langleson您的输出在“before”中显示正向斜杠,因此无需转义这些字符。
qDebug() << "image file: " << _imageFile