[英]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()
。
new
和QProcess
之間缺少空間。
范圍內沒有parent
變量。 當然,還有QObject
的parent()
成員。 您可以簡單地將進程父級指向窗口本身。
如錯誤所示,您無法在沒有對象的情況下調用QLineEdit::text
。 只有你知道你需要什么對象。 我們現在假裝對象是ui->myLineEdit
。
波浪擴展由外殼完成。 內核不知道代字號是什么, QProcess
也不知道。 您需要提供可執行文件的完整路徑。
HOME
環境變量中的主目錄也不總是可用。 它應該從便攜式QDir::homePath()
。
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.