2014-01-07 4 views
1

Привет, я пытаюсь запустить простой QProcess, вот мой очень простой код.Простой QProcess

QDir("/home/brett/sweetback"); 
     QProcess process; 
     process.start("mysqldump -uroot -ppass sweetassurfwear > sweetassurfwear.sql"); 
     process.waitForFinished(-1); 

Что не так? Я chaged код этого

QString program = "/usr/bin/mysqldump"; 
QStringList arguments; 
arguments << "-uroot"; 
arguments << "-ppass"; 
arguments << "--routines"; 
arguments << "sweetassurfwear > sweetassurfwear.sql"; 
//All the other arguments 

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

Im теперь получаю ошибку

sweetgui2.cpp: In member function ‘void SweetGuiForm::on_buttonBox_accepted()’: 
sweetgui2.cpp:88: error: no matching function for call to ‘QProcess::QProcess(<unresolved overloaded function type>)’ 
/usr/include/QtCore/qprocess.h:219: note: candidates are: QProcess::QProcess(const QProcess&) 
/usr/include/QtCore/qprocess.h:129: note:     QProcess::QProcess(QObject*) 
make: *** [sweetgui2.o] Error 1 

Я изменил линию

QProcess *myProcess = new QProcess(parent); 
to 
QProcess *myProcess = new QProcess(this); 

Теперь он компилирует, но им по-прежнему не получает файл дампа

+0

Родитель является функцией в каждом классе на основе QObject. Таким образом, либо вы должны называть 'parent()', если вы хотите, чтобы QProcess стал дочерним по отношению к родительским объектам текущих объектов или 'this', если вы хотите, чтобы QProcess был дочерним из текущего QObject –

ответ

1

Изменить следующую строку:

arguments << "sweetassurfwear > sweetassurfwear.sql"; 

к:

arguments << "sweetassurfwear" << ">" << "sweetassurfwear.sql"; 

Вы должны обрабатывать различные строки в виде отдельных аргументов.

0

Согласно документации Qt, вы должны сделать что-то похожее на:

QString program = "PathTo/mysqldump"; 
QStringList arguments; 
arguments << "-uroot"; 
arguments << "-ppass"; 
//All the other arguments 

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

Обратите внимание на то, как вы должны дать своему приложению mysqldump свои аргументы командной строки.

+0

Awsome, но im, получая эти ошибки, не уверен, почему ошибка: нет функция соответствия для вызова «QProcess :: QProcess» (<неразрешенный перегруженный тип функции>) ' /usr/include/QtCore/qprocess.h:219: примечание: кандидаты: QProcess :: QProcess (const QProcess &) /usr/include/QtCore/qprocess.h: 129: note: QProcess :: QProcess (QObject *) – Brett

+0

Этот ответ, похоже, не затрагивает проблему в вопросе. – lpapp

Смежные вопросы