对不起,如果这是一个愚蠢的问题。我不是很懒。我跟随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表单
我只是尝试启用okButton,默认情况下已禁用。此外,如果我cout&lt;&lt; “ABC”;它没有显示出来。你能否对此有所了解?
答案 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 ui
是GoToCellDialog
的私有成员,您无需在其他任何位置对其进行实例化。
另请参阅:Calculator Form Example。