簡體   English   中英

我的Qt代碼無法編譯“無法調用沒有對象的成員函數”

[英]My Qt code doesn't compile with “cannot call member function without object”

所以我很難找到解決方案,不知道我哪里出錯了。 我是QT(今天)的新手,我不確定我是否做得對。

我正在嘗試為已經創建的c程序(圖像處理程序)創建GUI。 圖像刮刀工作,但我正在嘗試實現GUI,允許用戶輸入網站將圖像從線條編輯框(lineEdit)中刪除,然后點擊按鈕(pushButton),它從中獲取輸入文本行編輯框並將其用作在后台運行C程序的參數。 因為上面提到的問題,我無法做到這一點。

任何幫助將不勝感激。 下面是我的代碼,標題和主文件沒有被更改,並且已經通過GUI設計者通過手動更改完成了所做的任何更改。

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

char *arguments;

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

  MainWindow::~MainWindow()
  {
    delete ui;
  }

  void MainWindow::on_pushButton_clicked()
  {

    QString program = "~/Desktop/IS";
    QString arguments = QLineEdit::text(); //error on this line

    QProcess *myProcess = newQProcess(parent);
    myProcess->start(program, arguments);

  }

所有錯誤都在on_pushButton_clicked()

  1. newQProcess之間缺少空間。

  2. 范圍內沒有parent變量。 當然,還有QObjectparent()成員。 您可以簡單地將進程父級指向窗口本身。

  3. 如錯誤所示,您無法在沒有對象的情況下調用QLineEdit::text 只有知道你需要什么對象。 我們現在假裝對象是ui->myLineEdit

  4. 波浪擴展由外殼完成。 內核不知道代字號是什么, QProcess也不知道。 您需要提供可執行文件的完整路徑。

  5. HOME環境變量中的主目錄也不總是可用。 它應該從便攜式QDir::homePath()

  6. QProcess::start()不帶兩個字符串。 它需要一個字符串列表作為第二個參數。 由於您只打算提供一個參數,因此將其包裝在字符串列表中是一件簡單的事情。

void MainWindow::on_pushButton_clicked()
{
   QString program = QDir::homePath() + "/Desktop/IS";
   QProcess *myProcess = new QProcess(this);
   myProcess->start(program, QStringList(ui->myLineEdit->text()));
   // The variant above is slightly shorter then the equivalent line below:
   myProcess->start(program, QStringList() << ui->myLineEdit->text());
}

在你的MainWindow表單上只需創建一個名為'InputWebSite'的lineEdit

然后更換

 QString arguments = QLineEdit::text();

QString arguments = ui->InputWebSite->text();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM