使用 .ui 未添加 Qt QPushbutton
Posted
技术标签:
【中文标题】使用 .ui 未添加 Qt QPushbutton【英文标题】:Qt QPushbutton not added by using .ui 【发布时间】:2022-01-11 08:52:21 【问题描述】:我正在尝试在我的 mainwindow.ui 中添加一个新的 QPushbutton。 我通过拖入.ui添加了Qpushbutton,在右侧我可以看到它添加正确。
(我添加了btnDownload按钮,btnQuit是很久以前添加的,效果很好)
我点击 btnDownload 上的 go to slot 并创建了以下代码:
void MainWindow::on_btnDownload_clicked()
QMessageBox::information(this,"notify","button is clicked "); //this part is what I added
但是,当我构建我的项目时,我没有看到在我找到它的地方添加了这个按钮。 为了解决这个问题,我尝试在 mainwindow.cpp 文件中使用 setGeometry 函数来定位此按钮。
这是我尝试编写的代码:
ui->btnDownload->setGeometry(x,y,wide,height);
但我收到warning message
说:
no memeber named 'btnDownload' in Mainwindow::ui
我确实在.ui中添加了QPushbutton,并创建了连接功能,但是找不到这个按钮..我应该如何解决这个问题?
【问题讨论】:
【参考方案1】:我想我修好了。 我将它与 btnQuit 按钮进行了比较(效果很好) 不同的是,新按钮没有在头文件中阐明。我要修复它,我认为它会起作用。如果没有,我会添加它。
【讨论】:
头文件只有在编译时才会更新,如果项目配置正确,则需要先运行uic实用程序。【参考方案2】:查看 .ui 文件。它是 XML。您应该会看到类似这样的内容
<widget class="QWidget" name="centralwidget">
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>130</x>
<y>150</y>
<width>75</width>
<height>23</height>
</rect>
</property>
<property name="text">
<string>PushButton</string>
</property>
</widget>
</widget>
在通常位于<workspace>\build-<project>-Desktop_Qt_6_2_0_MSVC2019_64bit-Debug\<project>_autogen\include
的构建目录中,您应该会找到包含内容的文件ui_mainwindow.h
#include <QtWidgets/QMainWindow>
#include <QtWidgets/QMenuBar>
#include <QtWidgets/QPushButton>
#include <QtWidgets/QStatusBar>
#include <QtWidgets/QWidget>
QT_BEGIN_NAMESPACE
class Ui_MainWindow
public:
QWidget *centralwidget;
QPushButton *pushButton; //<<======= this
QMenuBar *menubar;
QStatusBar *statusbar;
void setupUi(QMainWindow *MainWindow)
您应该在下方找到按钮的实例化
void setupUi(QMainWindow *MainWindow)
if (MainWindow->objectName().isEmpty())
MainWindow->setObjectName(QString::fromUtf8("MainWindow"));
MainWindow->resize(800, 600);
centralwidget = new QWidget(MainWindow);
centralwidget->setObjectName(QString::fromUtf8("centralwidget"));
pushButton = new QPushButton(centralwidget); // <<<============= this
pushButton->setObjectName(QString::fromUtf8("pushButton"));
pushButton->setGeometry(QRect(130, 150, 75, 23));
MainWindow->setCentralWidget(centralwidget);
【讨论】:
这是解决问题的确切方法。起初我没有看到 ui_mainwindow.h 文件,所以我不知道该文件存在。我找到了那个文件并添加了一些代码,我可以使用这个 QPushbutton。非常感谢!以上是关于使用 .ui 未添加 Qt QPushbutton的主要内容,如果未能解决你的问题,请参考以下文章