Lar*_*lla 13 qt signals qwidget
我正在寻找类似于完成信号的东西QDialog
,仅用于QWidget
.原因是,一旦窗口小部件弹出(我根本不是问题),我禁用我的工具栏,并且我希望在关闭窗口小部件后再次启用工具栏.
我也无法覆盖该窗口小部件的close-Event,因为那时我们将在业务类中使用GUI代码.
Fra*_*eld 19
您可以将窗口小部件设置为在关闭时删除,然后收听其destroyed
信号:
widget->setAttribute( Qt::WA_DeleteOnClose );
connect( widget, SIGNAL(destroyed(QObject*)), this, SLOT(widgetDestroyed(QObject*)) );
Run Code Online (Sandbox Code Playgroud)
这只适用于你对小部件内容不感兴趣的情况.在destroyed()
发射点时,窗口小部件QWidget
不再是,只是一个QObject
(destroyed()
从发射出来~QObject
),因此您不能再将该参数转换QObject*
为QWidget
.
一个简单的替代方案可能是使用a包装您的小部件QDialog
.
Liz*_*Liz 12
在您的Widget类中,您可以添加其他人可以连接的信号.然后覆盖该closeEvent()
方法.不要担心重写这种方法,这种情况恰恰是正确的做法.
class MyCustomWidget: public QWidget
{
Q_OBJECT
...
signals:
void WidgetClosed();
protected:
//===============================================================
// Summary: Overrides the Widget close event
// Allows local processing before the window is allowed to close.
//===============================================================
void closeEvent(QCloseEvent *event);
}
Run Code Online (Sandbox Code Playgroud)
在该closeEvent
方法中触发您的信号:
void MyCustomWidget::closeEvent(QCloseEvent *event)
{
emit WidgetClosed();
event->accept();
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16576 次 |
最近记录: |