你如何访问对象属性?

时间:2013-07-10 20:22:21

标签: qt qt-creator

对不起,如果这是一个愚蠢的问题。我不是很懒。我跟随Qt 4的 C ++ GUI编程,本书中的一个例子与Qt对我的工作方式不同。

它让我进行对话,然后连接一些信号和插槽。好吧,这不起作用,所以我尝试了一些现实检查。我甚至无法手动编辑对象属性。

主要是

#include <QApplication>
#include <QDialog>
#include <iostream>
#include "ui_gotocelldialog.h"

using namespace std;

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    Ui::GoToCellDialog ui;
    QDialog *d = new QDialog;
    ui.setupUi(d);
    d->show();
    return app.exec();
}

,这是我的对话框.cpp文件

#include "gotocelldialog.h"
#include "ui_gotocelldialog.h"
#include <iostream>
using namespace std;

GoToCellDialog::GoToCellDialog(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::GoToCellDialog)
{
    cout << "!!!!!!!!!!!!!!!!!!!!!"; // i never see this
    ui->setupUi(this); // but if i comment out this it doesnt init
    ui->okButton->setEnabled(true); // this does nothing
}

GoToCellDialog::~GoToCellDialog()
{
    delete ui;
}

以下是设计模式下的GoToCellDialog表单 enter image description here

我只是尝试启用okButton,默认情况下已禁用。此外,如果我cout&lt;&lt; “ABC”;它没有显示出来。你能否对此有所了解?

1 个答案:

答案 0 :(得分:1)

您的代码中存在多个问题。

您已经创建了一个GoToCellDialog类并实现了它的构造函数。但是你不创建这个类的对象。当然,你的构造函数没有被执行。您需要在主要功能中将QDialog替换为GoToCellDialog

如果您确实需要QDialog,而不是QWidget,则需要从GoToCellDialog派生QDialog课程,而不是QWidget。在Qt Creator中创建设计器表单类时有一个选项。

您在main函数中创建了Ui::GoToCellDialog,但在GoToCellDialog类中创建了另一个(请注意ui私有成员)。如果您要实例化您的类,它将为您提供Ui::GoToCellDialog的2个实例,不应该这样做。从主要功能中删除Ui::GoToCellDialog

我认为您已经混淆了由您定义的GoToCellDialog类和内部生成的Ui::GoToCellDialog类。 Ui::GoToCellDialog uiGoToCellDialog的私有成员,您无需在其他任何位置对其进行实例化。

另请参阅:Calculator Form Example