如何访问班级儿童的ui文件。让我们说MainWindow类有两个子对话框。我想访问LINEEDIT对话框,以便我可以从那里获取文本。同样,如何在QT中访问子类中父级的ui文件。注意:我没有从Parent类继承任何东西。 我已经写了下面的代码,以便显示一个对话框,但它不会显示!
void MainWindow::displaydialog()
{
ItemDialog dialog= new ItemDialog(this);
dialog->show(); // it is not displaying the dialog
}
如何访问ui小部件,例如检查是否已选择ListWidget项。
这是itemdialog的代码,
#include "itemdialog.h"
#include "ui_itemdialog.h"
#include "mainwindow.h"
ItemDialog::ItemDialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::ItemDialog)
{
ui->setupUi(this);
setWindowTitle("Status Dialog");
setFixedSize(QWidget::sizeHint());
}
ItemDialog::~ItemDialog()
{
delete ui;
}
void ItemDialog::on_pushButton_clicked()
{
MainWindow obj;
obj.okbuttonclicked(ui->lineEdit->text());
}
答案 0 :(得分:0)
请查看以下示例:http://qt-project.org/doc/qt-4.8/designer-using-a-ui-file.html
它解释了如何使用从Qt Designer生成的ui文件。您不应该将它们视为“ui文件”,即在您的类中的小部件上访问它们。这个想法是你包含它们,然后使用它们的setupUi()
函数将它们应用到你给定的类中。此时,您在qt designer中创建的所有内容,即该ui文件中的内容,现在都是您的类的成员。可以通过qt designer中使用的命名来访问它们。
至于为什么你的对话框没有显示...我不知道,因为你只包括3行代码作为例子。从理论上讲,它应该显示Mydialog
是否已正确设置。您可以尝试将其更改为QDialog
,以确保您的自定义类没有出错。
答案 1 :(得分:0)
这取决于你想要的对话框。要么它是一个模态对话框 - 某种信息显示或反击阻止程序的功能,直到用户做出反应,或它是某种工具箱或类似物,在这种情况下你可能不应该使用{{ 1}}。
如果您想要一个带有线条编辑和/或其他功能的模态对话框,您应该阅读文档中的QDialog。请参阅QDialog
功能。基本用法如下:
exec()
关键是void MainWindow::displaydialog()
{
ItemDialog *dialog = new ItemDialog();
if (dialog->exec() == someApropriateReturnStatus)
{
QString somevalue = dialog->someValue();
int dialog->someOtherValue();
//do something with the value
}
delete dialog;
}
类在内部处理UI并相应地实现getter函数,不应该(在大多数情况下)从外部访问它的UI。
如果你想要一个简单的线条编辑,你最好使用Qt中已经实现的标准对话框之一,看一下Standard Dialogs Example