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 次 |
| 最近记录: |