あなたの問題は、コンソールアプリの機能をスロットとは定義されていないので呼び出せないことです。それで、あなたがそれをやる方法はここにあります。
のは、あなたがこのようになりますコンソールアプリケーションのクラスを持っていると仮定しましょう:
class ConsoleApp
{
public:
void run()
{
// Code which you want to trigger by a button in your UI.
}
}
その後、我々はそれゆえ、QObjectをクラスから継承するとQtベースのラッパークラスを実装し、信号を送信および受信することができます。このクラスは、ConsoleAppクラスに実行を委譲するカスタムスロットを提供するだけです。
class ConsoleAppWrapper : public QObject
{
Q_OBJECT
public slots:
void startProgram()
{
m_consoleApp.run();
}
private:
ConsoleApp m_consoleApp;
}
[OK]を押すと、 '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でどのように機能するかを理解するのに役立ちます。
乾杯、 ジョニー
は、私はあなたがQML、またはUIデザイナを使用して –
あなたが計画していますhttp://doc.qt.nokia.com/latest/tutorials.htmlでQtのチュートリアルに従ってください示唆しますか?これは大きな違いになります。 – kmdent
@kmdent - 私はUIデザイナーを使用しています。 –