从C+运行一个方法+;使用Qt编程,而不使用Qt编写整个程序 P>是否可以从C++程序中用特定的输入参数运行某个方法,例如在单击按钮时,不必在Qt本身中编写完整的程序?
假设我在VisualStudio中有一个项目,其中有一个对应的.exe,每当单击按钮时,我都希望使用输入参数5运行方法示例。我怎么能这么做 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/
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();
}