如何为主窗口创建的小部件创建 QCloseEvent
Posted
技术标签:
【中文标题】如何为主窗口创建的小部件创建 QCloseEvent【英文标题】:How can I create a QCloseEvent for a widget created by the mainwindow 【发布时间】:2018-03-04 01:49:31 【问题描述】:我的 MainWindow 创建了一个名为 wid 的 QWidget。如何创建一个在该小部件关闭时激活的插槽?
【问题讨论】:
【参考方案1】:您可以继承 QWidget 并添加如下功能:
class CloseableWidget: public QWidget
Q_OBJECT
public:
CloseableWidget(QWidget* parent = nullptr): QWidget(parent)
signals:
void onClose(QCloseEvent* e);
protected:
void closeEvent(QCloseEvent* e) override
emit onClose(e);
;
并创建CloseableWidget
的实例而不是QWidget
,现在您可以将wid
与onClose
信号连接到MainWindow 的插槽。
【讨论】:
我需要单独包含它吗?我收到以下错误:C2143:语法错误:缺少“;”在“*”错误之前:C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int 指针声明为:CloseableWidget *wid=new CloseableWidget; 将此添加到moc
的单独头文件中
我只是把 closeWidget 类放在 mainwindow 类之后,并试图在 mainwindow 的声明中创建一个指向 closewidget 的指针。但现在可以了,谢谢!以上是关于如何为主窗口创建的小部件创建 QCloseEvent的主要内容,如果未能解决你的问题,请参考以下文章
升级的小部件不会出现在使用qt designer创建的主应用程序中