QT关于在槽函数中修改组件属性导致程序崩溃求解答

Widget::Widget(QWidget*parent):QWidget(parent),ui(newUi::Widget){ui->setupUi(this);QL... Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this); QLabel *test = new QLabel(); QPushButton *test_button = new QPushButton("test"); QHBoxLayout *test_layout = new QHBoxLayout; test_layout->addWidget(test); test_layout->addWidget(test_button); setLayout(test_layout); test->setText("test"); connect(test_button,SIGNAL(clicked()),this,SLOT(test_button_clicked()));}void Widget::test_button_clicked(){ test->setText("test _ fianl");}点击按钮进入槽函数时就会崩溃 工程全新 就在h文件里定义了按钮 label和槽函数 以上为cpp文件修改主体 编译可以正常通过 一旦点击按钮就程序异常退出 求大神解答 展开
 我来答
Polaris北斗
2019-04-04 · TA获得超过3204个赞
知道大有可为答主
回答量:2530
采纳率:79%
帮助的人:823万
展开全部

如果你能编译通过,那说明你在头文件中一定有这样的定义:

QLabel *test;

否则test_button_clicked()中会报错, test不存在

而你在构造函数中又这样定义:

QLabel *test = new QLabel();

其实质是新建了一个QLable,并不是头文件中声明的test,头文件中的 test并没有初始化,还是空值,所以在调用槽函数test_button_clicked()因为test为空,导致程序崩溃

解决办法:

把构造函数中的

QLabel *test = new QLabel();

改为:

test = new QLabel();

这也应该是你的本意

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式