单击按钮时调用对象函数

Posted

技术标签:

【中文标题】单击按钮时调用对象函数【英文标题】:Call object function when pushbbotton clicked 【发布时间】:2020-09-17 20:58:32 【问题描述】:

我是 Qt 的新手。我在将 Qt 小部件与 C++ 对象连接时遇到问题

main.cpp

#include "mainwindow.h"
#include <QApplication>
#include <DBMS.h>

int main(int argc, char *argv[])

    DBMS dbms;
    
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();

主窗口.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QInputDialog"

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

    ui->setupUi(this);
    ui->stackedWidget->addWidget(&create_DB_Frm);
    ui->stackedWidget->addWidget(&select_DB_Frm);
    ui->stackedWidget->addWidget(&delete_DB_Frm);


MainWindow::~MainWindow()

    delete ui;

void MainWindow::on_CreateNewDatabase_clicked()

    QInputDialog inputDialog;
    QString dbName = inputDialog.getText(this, "Database Name", "Provide name for your database");
    //Right here i want to call dbms objec, which i define in main.cpp and call it function
//like : dbms.addDatabase(dbNames);

DBMS.cpp

#include <DBMS.h>

DBMS::DBMS()




void DBMS::addName(QString strName)

    str.push_back(strName);


DBMS::~DBMS()



DBMS.h

#ifndef DBMS_H
#define DBMS_H
#include <QString>
#include <vector>

class DBMS

public :
    DBMS();
    void addName(QString);
    ~DBMS();
private:
    std::vector <QString> str;
;



#endif // DBMS_H

我的问题是:当我单击 CreateNewDatabase 按钮​​时,如何从 DBMS.cpp 调用函数 ```addDatabase(Qstring)`` (在 Qt 设计器中创建了 CreateNewDatabase 按钮​​)

我认为它必须与信号和插槽有关,但我一直在网上搜索,没有找到明确的答案

【问题讨论】:

使用std::vector &lt;QString&gt;而不是QStringList有什么具体原因吗? 你的 DBMS 有一个函数 DBMS::addName() ,它应该被定义为一个可以用 signal/slot 模型调用的槽......为此你的 DBMS 也应该有 Q_OBJECT 宏,请注意,为了将QObject::connect() 信号发送到插槽,DBMS 对象应该在您的mainwindow 中已知。您可以在mainwidow 中创建 DBMS 对象.. 【参考方案1】:

这不是别人可以告诉你答案的,你需要了解 Qt 中的信号/槽机制是如何工作的。

例如,您的 DBMS 类必须从 QObject 派生。

在 Qt 助手的索引部分搜索这个词:Q_OBJECT

然后阅读本节中的一些链接: 另请参阅元对象系统、信号和插槽以及 Qt 的属性系统。

【讨论】:

以上是关于单击按钮时调用对象函数的主要内容,如果未能解决你的问题,请参考以下文章

在 Bootstrap 模式中单击按钮时调用 JS 函数

Django admin:如何在单击自定义按钮时调用操作?

按下按钮时调用函数

Python Kivy:如何在按钮单击时调用函数?

单击按钮调用php函数

在 discord_components (python) 中单击按钮时调用 python 函数