Полагаю, ваша проблема в том, что вы не можете вызвать функцию консольного приложения, поскольку оно не определено как слот. Вот как вы можете это сделать.
Предположим, у вас есть класс консольного приложения, который может выглядеть следующим образом:
class ConsoleApp
{
public:
void run()
{
// Code which you want to trigger by a button in your UI.
}
}
Затем мы реализуем класс-оболочку на основе Qt, который наследуется от класса QObject и, следовательно, может отправлять и получать сигналы. Этот класс просто предоставляет пользовательский слот, который делегирует выполнение классу ConsoleApp.
class ConsoleAppWrapper : public QObject
{
Q_OBJECT
public slots:
void startProgram()
{
m_consoleApp.run();
}
private:
ConsoleApp m_consoleApp;
}
Хорошо, и теперь нам нужна кнопка, которая при нажатии запускает вызов метода run ().
int main(int argc, const char** argv)
{
QApplication app(argc, argv);
// Define wrapper for console app.
ConsoleAppWrapper wrapper;
// Define button and connect its 'clicked()' signal
// to the wrapper's 'startProgram()' slot.
QPushButton startProgramButton("Start Program");
connect(&startProgramButton, SIGNAL(clicked()), &wrapper, SLOT(startProgram()));
// Show the button.
startProgramButton.setVisible(true);
// Start Qt's event loop.
app.exec();
}
Это должно дать вам кнопку «Запустить программу», которая при нажатии вызовет метод ConsoleApp :: run ().
Хотя этот пример не основан на Qt Designer, я надеюсь, что этот пример поможет вам понять, как работают сигналы и слоты в Qt.
Cheers,
Jonny