방금 시작한 Qt를 사용하여 은 문서, Google, 예제 등을 통해 살펴 보았습니다. 간단한 예제 (작동중인 마음이 있습니다) 을 찾으려고 노력했습니다. 글쎄, 나는 내 대답에 비틀 거리며,이 접근법이 나중에 코드가 복잡해지면서 문제를 일으킬 지 궁금해하고 있었다. 이 예제에는 필요한 것보다 많은 포함이 있지만 작업 코드에서 직접 가져온 것입니다. mainwindow.h는 : 제가 qt5 디자이너가 fileopen을 사용하여 lineedit에 파일 경로를 표시하는 데 문제가 있습니까?
private slots:
void vpkButton_clicked();
및 UI :: * MainWindow를 UI 후
첨가; 내가 추가했습니다 QLineEdit * vpkPathTxt; mainwindow.cpp에서 : 내가 적절한 슬롯에 내 UI 버튼을 연결하는connect(this->ui->vpkButton, SIGNAL(clicked()), this, SLOT(vpkButton_clicked()));
을 추가
ui->setupUi(this);
후, 문제는 라인 편집에 표시 할 vpkButton_clicked()에서 문자열을 받고 있었다 m에서
이vpkPathTxt = this->ui->vpkPathTxt;
기능 : 나는 내가이 다음에 추가 된 근무 결국 무엇을 , 디자이너에서 만든 y를 MAIN.CPP 매우 간단했다 : (상단 외부 빈 공간에서 QString 선언)
void MainWindow::vpkButton_clicked()
{
vpkName = QFileDialog::getOpenFileName(this,
tr("Open VPK File"), "~/", tr("VPK Files (*_dir.vpk)"));
vpkPathTxt->setText(vpkName);
qDebug() << vpkName;
}
내가 요구하고있는 이유는 신뢰성이 조금 너무 쉬운 것, 그리고 내가 그것을 본 havent 한 사실이 완료 때문이다 이렇게하면 모든 입력 환영합니다. thankyou
왜 'ui-> vpkPathTxt'를 가리키는 다른 변수'vpkPathTxt'를 사용합니까? 일부 타이핑을 저장하기 만하면됩니까? 'ui' 포인터 뒤에있는 아이디어는 모든 UI 요소를 캡슐화하여 클래스의 로직 요소에 필요한 다른 변수와 "간섭하지"않는다는 것입니다.또한'this->'는 선택적이다. 나는 그것을 떠날거야. – leemes
왜냐하면'vpkPathTxt'는 다른 문장에서 사용하는 초기화되지 않은 포인터이기 때문입니다. 그것들을'ui-> vpkPathTxt'로 대체하고 헤더 파일의 변수를 제거하십시오. 만약 당신이 올바르게 이해했다면 당신은'Ui :: MainWindow * ui' 아래의 헤더에 그러한 변수가 있습니다. – leemes
없이 "vpkPathTxt = this-> ui-> vpkPathTxt;" "ui-> vpkPathTxt.setText (vpkName);"을 사용하여 경로가 표시 될 파일을 선택할 때 앱이 단순히 사라집니다. " 비참하게 실패합니다. 아마도 적절한 연결이 없기 때문일 것입니다./ – angjminer