Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从C+运行一个方法+;使用Qt编程,而不使用Qt编写整个程序 P>是否可以从C++程序中用特定的输入参数运行某个方法,例如在单击按钮时,不必在Qt本身中编写完整的程序?_C++_Qt - Fatal编程技术网

从C+运行一个方法+;使用Qt编程,而不使用Qt编写整个程序 P>是否可以从C++程序中用特定的输入参数运行某个方法,例如在单击按钮时,不必在Qt本身中编写完整的程序?

从C+运行一个方法+;使用Qt编程,而不使用Qt编写整个程序 P>是否可以从C++程序中用特定的输入参数运行某个方法,例如在单击按钮时,不必在Qt本身中编写完整的程序?,c++,qt,C++,Qt,假设我在VisualStudio中有一个项目,其中有一个对应的.exe,每当单击按钮时,我都希望使用输入参数5运行方法示例。我怎么能这么做 Qt通过创建一个QWidget窗口,然后创建一个事件循环来运行 创建窗口和触发另一个函数的按钮的代码非常简单 Qt提供的许多示例都显示了此功能 要开始,请下载Qt。下载Visual Studio的Qt附加组件。请注意,VisualStudio的快速版不能与Qt附加组件一起使用 完成所有这些之后,从可用的Qt类创建一个Qt项目。在这种情况下,我不会选择QML/

假设我在VisualStudio中有一个项目,其中有一个对应的.exe,每当单击按钮时,我都希望使用输入参数5运行方法示例。我怎么能这么做

Qt通过创建一个
QWidget
窗口,然后创建一个事件循环来运行

创建窗口和触发另一个函数的按钮的代码非常简单

Qt提供的许多示例都显示了此功能

要开始,请下载Qt。下载Visual Studio的Qt附加组件。请注意,VisualStudio的快速版不能与Qt附加组件一起使用

完成所有这些之后,从可用的Qt类创建一个Qt项目。在这种情况下,我不会选择QML/Qt-Quick,而是选择Qt-Widgets类,例如
QWidget
QDialog
QMainWindow

使用Qt加载项应确保找到了库并可供Visual Studio使用

确保您可以得到一个helloworld示例,该示例是可构建的,并且使用某种Qt小部件运行

它为您生成的代码应该如下所示:

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}
要制作一个功能强大的GUI,您需要利用的不仅仅是一个函子,还要使用QObject,让它使用moc编译器,并为所有自定义函数创建自己的信号和插槽

连接到函子是Qt 5的新功能

一种更为详细的方法是将QWidget或QMainWindow子类化,就像它为您生成的那样,并将一个方法放入子类函数中,然后将它放在头文件的
插槽
列表下

花点时间理解信号和插槽,您可以创建几乎任何您可以想象使用Qt的GUI。祝你好运


希望这有帮助。

这没什么意义。按钮在做什么?你为什么要用Qt?这个有什么用例?@Qix我想建立一个接口。那我该怎么做呢?你想调用什么方法?为什么这个Qt方法比一些小得多的选项更好?@Qix我不想从Qt调用方法,我想从我在Visual Studio中编写的程序调用方法。那么,你还建议做一个界面,而不必在Qt中重新编码我的整个项目吗?@user3482499你绝对没有明确说明你想要什么。我们必须在这里猜测。非常感谢!我想这正是我想要的!我感谢你的努力!我记得我想制作的第一个GUI,我向一些人提出了完全相同的问题,得到了一些不太有用的答案。最初的学习曲线有点陡峭,但还不错。祝你好运。我遇到了完全相同的问题。对于真正的初学者来说,没有那么多可用的信息。非常感谢分享您的发现!我像你说的那样安装了所有东西,但是现在当我复制你编写的第一个示例程序时,VS在所有的include语句下加了红色下划线(它找不到头文件)。所以我去了project->properties,然后去了additional include Directory,但我不确定应该在那里选择哪些文件夹。你知道我应该选哪一个吗?或者是我做错了什么?我应该补充一点,我在VS 2012版本的附加组件中使用了VS 2012 Ultimate。
#include <QWidget>
#include <QPushButton>
#include <QVBoxLayout>
#include <QDebug>
#include <QApplication>

static void someFunction ()
{
    qDebug() << "Button was clicked";
    // run my other function that requires a parameter of 5

    qDebug() << "Run my other function with 5!";
    // otherFunction(5);
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QWidget w;

    QPushButton *button = new QPushButton("Click Me");
    QObject::connect(button, &QPushButton::clicked, someFunction);

    QVBoxLayout *vbox = new QVBoxLayout();
    vbox->addWidget(button);

    w.setLayout(vbox);
    w.show();

    return a.exec();
}