Qt里子对象如何给父对象发送消息呢?
Qt里创建一个主widget,主widget的主要显示区由几个子widget在不同条件下交替显示,按下其中默认子widget上的按钮后,会弹出判断对话框,输入正确后将在主widget的主显示区显示另外一个子widget,问题来了,这个时候子widget可以关闭自己,但是怎么获取父widget的句柄或者指针呢?关掉自己也调不出需要显示的那个子widget啊?对c++和Qt还不熟悉,有人了解吗?
1,子widget的构造函数里传入了parent指针,这个时候子widget能通过这个指针访问父widget吗?
2,如果用信号与槽的话在父widget还是子widget里定义?
上面2种方法试了感觉都不行,c++基础薄弱,麻烦指点一下,剩余分不多了。。。
------解决思路----------------------
1,子widget的构造函数里传入了parent指针,这个时候子widget能通过这个指针访问父widget吗?
可以啊!没问题。举个简单例子:
QWidget *parentWidget = new QWidget(NULL);
QWidget *childWidget = new QWidget(parentWidget);
if ( childWidget->parent() )
{
childWidget ->parent()->.......
......
}
再比如:自己的控件
MyMainWindow *mainWin = new.....;
MyDialog * dlg=new MyDialog(mainWin );
if (dlg->hasParent() )
{
MyMainWindow *parentWin = static_cast<MyMainWindow *>(dlg->parent());
parentWin->...
...
}
2,如果用信号与槽的话在父widget还是子widget里定义?
这个跟父子关系没啥关系,关键看哪个是发信号,哪个是接受信号。sender(signal),receiver(slot).
------解决思路----------------------
if ( childWidget->parent() )
{
childWidget ->parent()->.......
......
}这个parent()是QObject对象,并不是QWidget *parentWidget,按照上面的方法访问parentWidget定义的函数,提示
: 错误:'class QObject' has no member named 'showt'