2013-07-10 2 views
1

죄송합니다. 바보 같은 질문 인 경우 죄송합니다. 나는 게으르지 않고있다. 나는 과 함께 Qt 4을 가진 C++ GUI 프로그래밍을 따르고 있으며이 책의 예제 중 하나는 Qt가 어떻게 작동하는지에 따라 다릅니다.개체 속성에 어떻게 액세스합니까?

대화를 만들어 신호와 슬롯을 연결합니다. 글쎄 그건 효과가 없으므로 현실 검사를 시도했다. 개체 속성을 수동으로 편집 할 수도 없습니다. 여기

은 여기 내 대화 .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; 
} 

#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(); 
} 

주이며, 여기입니다 디자인 모드에서 GoToCellDialog 양식 enter image description here

기본적으로 비활성화되어있는 okButton을 활성화하려고합니다. 또한, 만약 내가 면접 < < "abc"; 그것은 나타나지 않습니다. 이걸 좀 밝힐 수 있니?

답변

1

코드에 몇 가지 문제점이 있습니다.

GoToCellDialog 클래스를 만들고 해당 생성자를 구현했습니다. 그러나 당신은이 클래스의 객체를 생성하지 않습니다. 물론 생성자가 실행되고 있지 않습니다. 주 기능에서 QDialogGoToCellDialog으로 바꿔야합니다. 하지 QWidget

당신이 정말로 QDialog 필요한 경우

는, 당신은 QDialog하지 QWidget에서 GoToCellDialog 클래스를 파생해야합니다. Qt Creator에서 디자이너 폼 클래스를 만드는 동안이 옵션을 사용할 수 있습니다.

당신은 주요 기능에 Ui::GoToCellDialog 만들지 만, 다른 하나는 GoToCellDialog 클래스합니다 ( ui private 멤버주의)에 생성됩니다. 클래스를 인스턴스화하면 Ui::GoToCellDialog의 2 개의 인스턴스가 주어져서 안됩니다. 주 기능에서 Ui::GoToCellDialog을 제거하십시오.

당신이 정의한 GoToCellDialog 클래스와 내부적으로 생성 된 Ui::GoToCellDialog 클래스를 혼동했다고 생각합니다. Ui::GoToCellDialog uiGoToCellDialog의 개인 회원이므로 다른 곳에서는 인스턴스화 할 필요가 없습니다.

다음을 참조하십시오 : Calculator Form Example.

+0

혼란 스럽지만 조금 도움이됩니다. 더 혼란 스럽기 때문에이 섹션을 건너 뛰어야 할 수도 있습니다. – user1873073

관련 문제