用原始c++编写qt应用程序(不是qml)
writing a qt application in raw c++ (no qml)
我是一个c++新手(说实话,我不知道什么算新手,但知道95%的c++工作原理,但在编写程序方面仍然是新手),最近开始摆弄gui。
我制作了一个运行良好的windows应用程序,但除了有时有点不方便之外,它还使我感到沮丧,因为它只能在windows上运行。
我正在尝试qt,经过一个小时的谷歌搜索,并在他们的教程中搜索,我似乎找不到一种使用原始c++代码(没有qml或任何类似的东西)编写程序的方法。
我想要的是类似于显示qt对象的函数,如:
displaybutton(xcoordinates,ycoordinates,button_object_by_reference);
如果我说得太笼统了,在关闭这个线程之前知道我可以指定什么就好了。
编辑:好吧,所以http://doc.qt.io/qt-4.8/examples-widgets.html是伟大的,但对我来说是不好的,因为我仍然不知道qt的基础知识。事情就像简单的主窗口是如何工作的,例如,如何显示类(我需要有一个布局,或者是一个坏的问题放在第一位)。这些示例有助于更好地理解qt的工作原理,但从中学习基础知识仍然不太容易(我部分掌握了这些基础知识,但是回顾示例并试图找出应该是自然完成的事情是乏味的)。那么,我在哪里可以找到环境如何工作的概述呢?
所以基本上,"qt是如何工作的,但不要用QML来解释;只使用c++来解释。"
您应该查看小部件示例。http://doc.qt.io/qt - 4.8/-例子widgets.html
在我选择的几个小部件中,所有的小部件都是用c++本地创建的。例如,在windowflags示例中(http://doc.qt.io/qt-4.8/qt-widgets-windowflags-example.html)。它展示了如何制作一个按钮。
quitButton = new QPushButton("Button Name");
// Signal and slots are how QT handles it's callbacks
connect(quitButton, SIGNAL(clicked()), qApp, SLOT(quit()));
对于布局,您需要查看QT布局选项。我更喜欢使用designer来感受对象放置时的样子,然后通常编写我自己的布局。同样从示例中,要将按钮添加到GUI
QHBoxLayout *bottomLayout = new QHBoxLayout;
bottomLayout->addStretch(); // Fill entire area
bottomLayout->addWidget(quitButton); // Place our button in that area
setLayout(bottomLayout); // Push layout to main GUI object.
要指定小部件的确切位置,可以这样做
QPushButton *button = new QPushButton(this);
button->setText("Try me");
button->move(30, 10);
button->show();
但是最好使用布局,这样你的布局将不受窗口大小调整的影响,你可以在这里阅读http://doc.qt.io/qt-5/examples-layouts.html
- 检查输入是否不是整数或数字
- 有充分的理由在h文件中使用include保护而不是cpp文件吗
- 为什么使用SFINAE而不是函数重载
- 为什么这个函数将"const char*"转换为"void* const"而不是"const void*"
- 为什么std::valarray不是算术的
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 为什么使用__LINE_的代码在发布模式下在MSVC下编译,而不是在调试模式下
- MSVC是否支持C++11样式的属性而不是__declspec
- 为什么文件名被设置为一个点,而不是在读取矢量中的文件名时
- 为什么make_tie不是一件事
- 在调用接收数组的方法时,模板化数组大小是不是一种糟糕的做法
- 为什么std::isnan 不是 constexpr?
- GlobalAlloc而不是其他分配方法
- 当比特(而不是字节)的顺序至关重要时的持久性
- 如何在其他 cpp 文件中使用嵌套Q_ENUM,而不是在 qml 中?
- QT Quick (QML) assemble mac-.bundle -> 不是使用 macdeployqt 时的动态库错误
- 从内存而不是URL动态加载QML
- 如何在 QML 中访问C++类对象,而不是在 QML 中创建单独的对象
- 是否可以从对象而不是类注册 QML 类型
- 用原始c++编写qt应用程序(不是qml)