c++ - 单击按钮时调用对象函数
问题描述
我是 Qt 的新手。我在将 Qt 小部件与 C++ 对象连接时遇到问题
主文件
#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);
}
数据库管理系统.cpp
#include <DBMS.h>
DBMS::DBMS()
{
}
void DBMS::addName(QString strName)
{
str.push_back(strName);
}
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 按钮(在 Qt 设计器中创建 CreateNewDatabase 按钮)时,如何从 DBMS.cpp 调用函数 ```addDatabase(Qstring)``
我认为它必须与信号和插槽有关,但我一直在网上搜索,没有找到明确的答案
解决方案
这不是有人可以告诉你答案的,你需要了解信号/槽机制在 Qt 中是如何工作的。
例如,您的 DBMS 类必须从 QObject 派生。
在 Qt 助手的索引部分搜索这个术语:Q_OBJECT
然后阅读本节中的一些链接:另请参阅元对象系统、信号和插槽以及 Qt 的属性系统。
推荐阅读
- python - 如何在 language.code 中包含区域?
- typescript - 为什么即使我有评估数据的条件,打字稿也会对类型进行比较?
- python - 使用 Numba 的 @jit 导致数学与 Python 中使用的 Numpy 的 float32 不一致
- reactjs - 一次获取所有数据还是单独调用更好
- django - 如何修复 Reactjs、Django、Django Rest Frame 工作项目中的“net::ERR_CONNECTION_REFUSED 和错误:网络错误”错误
- c# - 我有一个很长的代码,我不太明白,请帮助将代码分解为更简单的语句
- php - 如何使用 php 语言将 HTML“类”属性转换为 css 选择器?
- pandoc-citeproc - pandoc-citeproc 作为 API:processCites' 不添加引用
- python-3.5 - ImportError:没有名为“yolo_utils”的模块
- python - tkinter ttk OptionMenu 在更新选项列表时丢失复选标记突出显示