我刚刚接触 Qt,我试图从 QlineEdit 中拉出字符串,并在单击按钮后将其附加到 QTextBrowser(为了简单/错误检查,我只是让它附加附加在时刻)。
程序运行,GUI 出现在屏幕上,但每当我单击按钮时,我的程序段就会出错。
这是我的代码,我删除了很多不必要的内容:
标题:
#ifndef TCD2_GUI_H
#define TCD2_GUI_H
//bunch of includes
class TCD2_GUI : public QWidget
{
Q_OBJECT
public:
TCD2_GUI(QWidget *window = 0);
//bunch of other members
QLineEdit *a1_1;
QTextBrowser *stdoutput;
public slots:
void applySettings(void);
private:
};
#endif // TCD2_GUI_H
这是导致错误的 cpp 片段
QTextBrowser *stdoutput = new QTextBrowser();
stdoutput->append("Welcome!");
QObject::connect(apply, SIGNAL(clicked()), this, SLOT(applySettings()));
//------------------------------------------------------Standard Output END
//layout things
}
void TCD2_GUI::applySettings()
{
stdoutput->append("appended");
}
最佳答案
applySettings()
函数中的
stdoutput
引用 TCD2_GUI
类的成员,而发生崩溃的代码段中的 stdoutput是一个局部变量。
尝试通过示例添加到构造函数中:
stdoutput = new QTextBrowser();
并从您的代码中删除以下行:
QTextBrowser stdoutput = new QTextBrowser();
关于qt - 在QT中设置新公共(public)信号后出现段故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4916741/