gpt4 book ai didi

c++ - 在我的主窗口中调用 Qt 小部件主窗口函数

转载 作者:行者123 更新时间:2023-11-30 05:05:06 25 4
gpt4 key购买 nike

我正在尝试在我的主函数中调用 Qt Mainwindow 函数,但不幸的是它不起作用

一些信息:我写了一个简单的登录应用程序。这是它的代码:

void MainWindow::on_pushButton_Login_clicked()
{
QString username = ui->lineEdit_username->text();
QString password = ui->lineEdit_password->text();

if(username == "test" && password == "test")
{
QMessageBox::information(this,"Login", "Username and password is
correct");
}

else
{
QMessageBox::warning(this,"Login", "Username and Password is not
correct");
}

}

我还有一段代码,用于将批处理文件的内容保存到 vector 中。在该代码中,我有一个查找函数,用于查找某个单词。

我在这里要实现的是 1. 将批处理的内容保存到我的 vector 中,然后让查找函数在该 vector 中查找特定单词,然后在找到该单词时提示用户输入用户名和密码(这是通过我的登录应用程序完成的)

现在这就是我的问题所在,我有所有的代码,但是我不知道如何将它们组合在一起,我不是 c++ 程序员,事实上我是一个完整的菜鸟。我的老板刚刚让我完成这件事,但我很挣扎 :c

这是用批处理文件的内容填充我的 vector 的代码

 int main()
{
// VARIABLES
// file path, pointer
const char * filePath = "C:/Users/Name/Downloads/test.bat";

// single line
std::string line;
// vector
std::vector<std::string> my_vec;
// filestream, reading
//std::ifstream myfile("batch.bat");
std::ifstream myfile(filePath);

// Test to open file
if (!myfile)
{
std::cout << "Error opening file" << std::endl;
exit(1);
}
else
{
std::cout << "File opened successfully (for reading)" << std::endl;
}


// Read from file and put into vector
while (myfile) // while we are reading the file
{
getline(myfile, line);
my_vec.push_back(line);
}
//my find function
std::vector<std::string>::iterator i;
i = std::find(my_vec.begin(),my_vec.end(),"batch");
if (i != my_vec.end())

/**** here is where id like to call my clicked function ****/
/* tried putting in "void MainWindow::on_pushButton_Login_clicked()" but it
here's what I got */

1.错误:对 qMain(int, char**) 的 undefined reference 和 collect2.exe:-1: error: error: ld returned 1 exit status

  else
std::cout<<"No result found" << std::endl;

// Close filestream
myfile.close();

return 0;
}

如果这个问题太具体或非常愚蠢,我深表歉意,但我只是需要帮助,但我找不到任何关于这样一个具体问题的信息,而且所有可能有帮助的东西都是为那些真正了解自己的人提供的重新使用 C++

我将不胜感激任何贡献!

Bearded beaver:我的 MainWindow 类在我的 mainwindow.H 头文件中定义我将其包含在我的 main.cpp 文件中

这是 Mainwindow.h 文件中的代码

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
Q_OBJECT

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


Ui::MainWindow *ui;
};

#endif // MAINWINDOW_H

这是我在上面的查找函数中输入的内容

std::vector<std::string>::iterator i;
i = std::find(my_vec.begin(),my_vec.end(),"much");
if (i != my_vec.end())

MainWindow.on_pushButton_Login_clicked();

else
std::cout<<"No result found" << std::endl;

这是我得到的错误

main.cpp:101: 错误:'.' 前应为非限定 ID token MainWindow.on_pushButton_Login_clicked(); ^

感谢您抽出时间!

最佳答案

我基本上做了一些非常愚蠢的事情,通过改变 main.cpp 文件(在 Qt Widgets 应用程序中)并删除看起来像这样的默认主函数

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

int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();

return a.exec();
}

因为声明了对象名称,所以我需要它来调用我在 MainWindow 类中的函数。像这样:

w.on_pushButton_Login_clicked();

不幸的是,我的查找功能不起作用。如果在我的 vector 中找到某个字符串元素,我想有一个条件语句调用我的函数:

if (std::find(my_vec.begin(),my_vec.end(),much) != my_vec.end() ) //or "much"
w.on_pushButton_Login_clicked();
else
std::cout<<"No result found" << std::endl;

我没有收到任何错误,它只是提示我登录应用程序,而不管是否找到了元素。

我不知道为什么会这样,但如果我发现了,我会编辑这个答案^^谢谢大家花时间,如果我使用了错误的术语/措辞,请提前道歉。

关于c++ - 在我的主窗口中调用 Qt 小部件主窗口函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48538898/

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