用原始c++编写qt应用程序(不是qml)

writing a qt application in raw c++ (no qml)

本文关键字:不是 qml 应用程序 qt 原始 c++ 编写      更新时间:2023-10-16

我是一个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