[英]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.