gpt4 book ai didi

c++ - 使用 Qt 在 C++ 中编写函数

转载 作者:行者123 更新时间:2023-11-28 03:00:52 24 4
gpt4 key购买 nike

除了我以前从未见过的这种情况外,我大部分时间都知道如何在 C++ 中格式化函数。

我目前有这个:

void MainWindow::on_viewEmployees_clicked()
{
QDebug debugTxt(QtDebugMsg);
DatabaseControl myDBControl; //this is the header file that I want to use
QSqlQuery qry;
bool ok;
int rows = myDBControl.getNumEmployees();
ui->table->setRowCount(rows);
int count = 0;
int currentCol = 0;

while(count < rows){
qry.prepare("SELECT * FROM employees ORDER BY lastname LIMIT :f1, :f2");
qry.bindValue(":f1", count);
qry.bindValue(":f2", count+1);
qry.exec();
qry.next();
currentCol = 0;
while(currentCol < ui->table->columnCount()){
QTableWidgetItem *setdes = new QTableWidgetItem;
setdes->setText(qry.value(currentCol).toString());
ui->table->setItem(count, currentCol-1, setdes);
currentCol++;
}
count++;

}
debugTxt << "Table successfully populated";
ui->lblResult->setText("[+] Table successfully populated");
}

当然,编译一切正常。它做的正是它应该做的——扫描 SQLite 数据库的内容并通过 QTableWidget 输出它,只要您单击“viewEmployees”按钮,就会按员工姓氏排序。没问题。

但是我想将其转换为一个函数...例如,DatabaseControl.refreshTableView()。

我将其复制/粘贴到 DatabaseControl 类中,并且我知道将所有 DatabaseControl 引用更改为“this”,但是我不知道如何处理“ui->”位,因为 ui->是我的 mainwindow.cpp 中的东西:

MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}

因此,我无法更改 MainWindow 中的任何 UI 元素(据我所知)。我想要做的是能够通过 DatabaseControl 类编辑这些 UI 元素。更具体地说,我想通过 DatabaseControl 编辑 QTableWidget 的内容。

最佳答案

您可以为 MainWindow 类编写公共(public)函数,这些函数可以从您的 DataControl 类访问,从而修改 ui 元素。
编辑:或者您可以在 MainWindow 中编写一个函数,它会返回一个指向 ui 变量的指针并从那里修改用户界面。
像这样:

MainWindow::getUI(){ return ui} // if your ui variable is already stored as a pointer

现在您可以从 DataControler 类调用 MainWindow::getUI() 函数并操作您的 Ui

关于c++ - 使用 Qt 在 C++ 中编写函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20888275/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com