C++ 使用插槽创建对话框
单击按钮时,我需要在当前程序的顶部创建一个新窗口(在本例中,我尝试创建一个对话框)。我有这个工作,但我有麻烦编辑对话框的内容。据我所知,没有为此创建.ui文件,只有在我将按钮连接到函数时才会创建该文件 我尝试使用QMessageBox,但无法根据需要调整窗口大小。但仍然遇到了添加其他元素的问题C++ 使用插槽创建对话框,c++,qt5,qdialog,C++,Qt5,Qdialog,单击按钮时,我需要在当前程序的顶部创建一个新窗口(在本例中,我尝试创建一个对话框)。我有这个工作,但我有麻烦编辑对话框的内容。据我所知,没有为此创建.ui文件,只有在我将按钮连接到函数时才会创建该文件 我尝试使用QMessageBox,但无法根据需要调整窗口大小。但仍然遇到了添加其他元素的问题 void MyNameSpace::openInfoDialog() { QDialog* Dialog = new QDialog(this); Dialog->setWindow
void MyNameSpace::openInfoDialog()
{
QDialog* Dialog = new QDialog(this);
Dialog->setWindowTitle("View Stuff");
Dialog->setMinimumSize(500,250);
Dialog->adjustSize();
DialogRunner* msgRunner = new DialogRunner(Dialog, this);
msgRunner->safeExec();
}
这是我的连接
connect(_Widget.InfoBtn, SIGNAL(clicked(bool)), this, SLOT(openInfoDialog()));
这段代码确实会在单击时生成一个对话框,但我需要能够向其中添加标签等内容。我还使用QT设计器作为所见即所得
如何通过单击按钮创建新窗口并用其他文本等填充
我有这个工作,但我有麻烦编辑的内容
对话
您可以在项目中添加ui文件:
使用该选项,Qt Creator将创建一个包含cpp和h文件的类,以及一个ui文件,您可以在其中添加其他小部件。
使用导入指令在需要的地方使用类,就像在上面的代码中一样,这样就可以使用ui文件。
然后将按钮的单击信号连接到dialog类的插槽。您可以在持有按钮的类的构造函数中执行此操作
您可以在本书中更详细地阅读这种方法
关于第2章:创建对话框。
它在网上免费提供。它使用Qt4,但在Qt5中,它的工作方式相同
编辑:这里有一个简单的示例,向您展示了在哪里可以使用所需的部分:一个带有按钮的主窗口(在ui文件中)。一个对话框类,它也有一个ui文件(上面有几个小部件)。单击主窗口上的按钮时,将显示对话框窗体。这就是我以前向你要的。它使沟通/测试更容易
pro文件
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = test
TEMPLATE = app
SOURCES += \
dialog1.cpp \
main.cpp \
mainwindow.cpp
HEADERS += \
dialog1.h \
mainwindow.h
FORMS += \
dialog1.ui \
mainwindow.ui
对话框1.cpp
#include "dialog1.h"
#include "ui_dialog1.h"
Dialog1::Dialog1(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog1)
{
ui->setupUi(this);
}
Dialog1::~Dialog1()
{
delete ui;
}
好的,你可以用你吃窗口类的方法自定义你的qdialog类,或者你可以创建另一个窗口类,并像这样运行mySecondWindow->exec(),据我所知,没有为它创建.ui文件,只有当我将按钮连接到函数时才会创建它。在C++代码中手动创建对话框的UI文件没有。但是,您可以在项目中创建多个具有.ui文件的小部件。我没有在Designer not creator上获得相同的选项,而且它也是较旧的版本(可能适用于QT 4),因此我建议遵循我提供的链接。这是Qt4(你想要的)。作者解释了如何使用用户界面文件和代码(没有用户界面文件)。您是否查看了该链接?是的,我已经阅读了该链接,我无法以某种方式应用该链接以获得所需的结果。您可以对您已有的内容进行最小程度的可复制示例吗?我的代码缺少的唯一相关部分是按钮的创建位置,但这并没有真正的帮助。基本上,我需要一种方法,使该对话框出现在点击,并有标签等东西
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui;
};
**mainwindow.cpp**
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "dialog1.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow)
{
ui->setupUi(this);
Dialog1* dialog = new Dialog1(this);
connect( ui->pushButton_1, SIGNAL(clicked()), dialog, SLOT(show()));
}
MainWindow::~MainWindow()
{
delete ui;
}
namespace Ui {
class Dialog1;
}
class Dialog1 : public QDialog
{
Q_OBJECT
public:
explicit Dialog1(QWidget *parent = nullptr);
~Dialog1();
private:
Ui::Dialog1 *ui;
};
#endif // DIALOG1_H
#include "dialog1.h"
#include "ui_dialog1.h"
Dialog1::Dialog1(QWidget *parent) : QDialog(parent), ui(new Ui::Dialog1)
{
ui->setupUi(this);
}
Dialog1::~Dialog1()
{
delete ui;
}