【问题标题】:How can I create a QCloseEvent for a widget created by the mainwindow如何为主窗口创建的小部件创建 QCloseEvent
【发布时间】:2018-03-04 01:49:31
【问题描述】:

我的 MainWindow 创建了一个名为 wid 的 QWidget。如何创建一个在该小部件关闭时激活的插槽?

【问题讨论】:

    标签: c++ qt user-interface widget


    【解决方案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,现在您可以将widonClose 信号连接到MainWindow 的插槽。

    【讨论】:

    • 我需要单独包含它吗?我收到以下错误:C2143:语法错误:缺少“;”在“*”错误之前:C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
    • 指针声明为:CloseableWidget *wid=new CloseableWidget;
    • 将此添加到moc的单独头文件中
    • 我只是把 closeWidget 类放在 mainwindow 类之后,并试图在 mainwindow 的声明中创建一个指向 closewidget 的指针。但现在可以了,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-12
    • 2020-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多