中易网

Qt:继承QWidget写一个类,该类中有Qlineedit、QLable等控件;使用时实例化该类,但访问该类时出错

答案:1  悬赏:0  
解决时间 2021-01-13 21:17
  • 提问者网友:记得曾经
  • 2021-01-13 11:16
Qt:继承QWidget写一个类,该类中有Qlineedit、QLable等控件;使用时实例化该类,但访问该类时出错
最佳答案
  • 二级知识专家网友:神的生死簿
  • 2021-01-13 12:54
你没有学过数据封装吗?还用widget->le->setText("ok"); 你不会使用set、get也就算了,这么简单的!
.h文件
class TWidget : public QWidget
{
Q_OBJECT
public:
explicit TWidget(QWidget *parent = 0);
void setLineEditText(QString text);
private:
QLineEdit *line_edit;
};

.cpp文件
TWidget::TWidget(QWidget *parent) : QWidget(parent)
{
line_edit = new QLineEdit(this);
line_edit->setFixedSize(150, 30);
line_edit->move(10, 10);
}
void TWidget::setLineEditText(QString text)
{
line_edit->setText(text);
}
任何时候请不要通过widget->le->setText("ok")这种方式来调用widget里面的东东!OK?
追问:昨天想了下,直接调用类中的对象可能不行,我使用函数,思路和你的类似,实例化后,调用函数还是出错,
TWidget *widget =new TWidget();widget->setLineEditText(“ok”);运行后还是出错的,我个人认为,实例化twidget后,里面的子控件指针默认被释放了,即使是使用函数也是要调用子控件的指针,所以还是会出错,个人想法,请大神指导!其实是可以用widget->le->setText("ok");我找到问题所在了,你提供的思路我也用过,只是我继承出来的QWidget子控件很多,还需要用到子控件的很多特性,所以肯定要直接引用,不能用函数代替!

非常感谢您的作答,我是半路出家,有时间会去学习一下 数据封装!
追答:widget->setLineEditText(“ok”);运行后还是出错的,错误是什么?我是简单编写的,没有测试!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息!
大家都在看
推荐信息