使用信号和插槽;
制作
EditorWindow::setStatusBarText
一个插槽当孩子想要改变状态时给他一个信号,然后把它连接到
setStatusBarText
狭槽。
// make setStatusBarText a slot...
class EditorWindow : public QWidget {
Q_OBJECT
...
public slots:
void setStatusBarText(const QString&);
}
// make a signal to be emitted when status should change:
class SomeChildWidget : public QWidget {
Q_OBJECT
...
signals:
void statusEvent(const QString&);
}
// connect them up when appropriate
EditorWindow::EditorWindow()
: QWidget()
{
...
m_childWidget = new SomeChildWidget(this);
connect(m_childWidget, SIGNAL(statusEvent(QString)),
this, SLOT(setStatusBarText(QString)));
...
}
那么孩子就会
emit statusEvent(somestring)
何时应更新状态。
这可以很好地扩展,您可以拥有任意多的子窗口小部件,这些小部件可以更改状态文本,它们对其父窗口小部件一无所知,您可以在父窗口小部件中实施策略,以接受或拒绝子窗口小部件的状态更新。