c++ - Qt 自动连接操作

标签 c++ qt

我已经使用 qt 设计器创建了一个表单,并创建了一个带有 objectName actionEmployeeWin 的 QAction,我想使用 qt 的自动连接功能,但它不起作用

ma​​in_win.cpp

#include "main_win.h"
#include "ui_mainwindow.h"

#include "employe_win.h"

#include <QSettings>
#include <QTextEdit>
#include <iostream>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow),
    empWin(nullptr), providerWin(nullptr)

{
    // setting up ui and loading last geometry
    ui->setupUi(this);

    QSettings settings;
    restoreGeometry(settings.value("MAINWINDOW/GEOMETRY").toByteArray());
    restoreState(settings.value("MAINWINDOW/WINSTATE").toByteArray());
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::closeEvent(QCloseEvent *evt) {
    QSettings appSetting;

    appSetting.setValue("MAINWINDOW/GEOMETRY", saveGeometry());
    appSetting.setValue("MAINWINDOW/WINSTATE", saveState());
    QMainWindow::closeEvent(evt);
}

void MainWindow::on_actionEmployeeWin_triggered(bool checked)
{
    std::cout << "working"; // do not show
}

main_win.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include "employe_win.h"
#include "provider_win.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void closeEvent(QCloseEvent *evt);

    void on_actionEmployeeWin_triggered(bool checked);

private:
    void createMenu();

    Ui::MainWindow *ui;

    EmployeeWindow *empWin;
    ProviderWindow *providerWin;
};

#endif // MAINWINDOW_H

最佳答案

您需要继承 Ui 表单才能使用自动连接功能。

参见此处:http://doc.qt.io/qt-5/qtuitools-multipleinheritance-example.html

注意:我通常建议依赖自动连接功能,只是因为这样的问题。自动连接是非显式的,并且它们的问题很难调试。太多的 QMetaObject 魔法不合我的口味。

关于c++ - Qt 自动连接操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34612882/

相关文章:

c++ - 就像在 python 中定义 __str__ 一样,在类上调用时如何覆盖 c++ 中的标准全局函数

c++ - 如何使用 Boost 单元测试框架测试 Qt 应用程序

c++ - Qt 应用程序中的 MongoDB C++ 驱动程序稳定分支崩溃

c++ - 链接错误 "undefined reference to ` __gxx_personality_v 0'"和 g++

c++ - 使用四元数方向的第一人称相机中的夹紧间距

c++ - g++ unicode 字符 ifstream

c++ - 如何针对发布构建的库 (MSVCRT.lib) 构建调试 .exe (MSVCRTD.lib)?

c++ - Qt - 当我在 qApp->processEvents() 期间关闭窗口时,程序仍在任务管理器中运行

c++ - 通过 UDP 发送结构而不进行序列化

c++ - 尝试在 QLabel 上绘画失败(无法在没有对象的情况下调用成员函数 'virtual void QLabel::paintEvent(QPaintEvent*)')