在我的主

时间:2018-01-31 09:39:59

标签: c++ qt function main qtwidgets

我试图在我的主要功能中调用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");
  }

}

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

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

现在我的问题出在哪里,我有所有的代码,但是我不知道怎么把它放在一起,我不是c ++程序员,事实上我&#39 ;马完成菜鸟。我的老板刚要求我完成这件事,我正在努力:c

这里是使用批处理文件的内容填充我的矢量的代码

 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 **)&#39;的未定义引用  和collect2.exe:-1:错误:错误:ld返回1退出状态

  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

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

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:错误:在&#39;之前预期不合格的ID。&#39;代币  MainWindow.on_pushButton_Login_clicked();            ^

感谢您抽出宝贵时间!

1 个答案:

答案 0 :(得分:1)

我基本上通过改变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();
不幸的是,我的查找功能不起作用。 我希望有一个条件语句,如果找到我的向量中的某个字符串元素,则调用我的函数:

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;   

我没有错误,它只是提示我登录应用程序,无论是否找到元素。

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