2013-06-17 2 views
0

실수로 삭제 버튼을 누른 경우 사용자에게 경고하기 위해 QMessageBox을 사용하고 있습니다. 사용자가 QMessageBox에서 확인 버튼을 누르면 함수가 호출되어 QTableView (데이터베이스에 연결된 행)을 삭제합니다. 삭제 후에는 QTableView를 새로 고쳐야하고 삭제 된 행이없는 새 데이터가 표시되어야합니다.Qt-creator : QMessageBox가 닫히지 않았습니다

사용자가 Delete button이되면 QMessageBox 경고가 나타납니다. 그가 Ok를 누르면 행은 QTableView에서 삭제됩니다. 이 시점에서 나는 QMessageBox이 사라질 것을 기대하고 있으며, 새롭게 업데이트 된 QTableView 버전은 나타나지 않습니다 !! 대신 QMessageBox이 다시 나타나고 새로 고침을 수동으로 수행해야합니다 (지금 막 응용 프로그램을 시작한 중입니다). 왜 이런 일이 발생합니까? 이 정말로 C++입니다 ...

QMessageBox msg; 
msg.setIcon(QMessageBox::Warning); 
msg.setText("Delete"); 
msg.setInformativeText("continue ?"); 
msg.setDetailedText("Delete permanently"); 
msg.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel); 
msg.setDefaultButton(QMessageBox::Cancel); 

int ret = msg.exec(); 
if(ret == 1024){ 
    msg.Close; 
    deleteDataBaseRecord(); // connect to server and delete DB data which is then show the QTableView again 
} 
else { 
    msg.Close; 
} 

답변

0

당신은 (없는) 당신의 닫기 통화에 : 여기

내 코드?

키워드 (삭제)를 함수 이름으로 사용하지 마십시오.

또한 사용할 수있는 이름이있을 때 상수 (1024)를 사용하지 마십시오.

+0

1- 거기에 아무 것도 없습니다() 닫기 및 예 C++ 있습니다. 2 - 간단히하기 위해 "Delete"를 붙이지 만 실제 코드에서는 다른 것으로 불려집니다. 3 - 반환 된 int를 변경할 수 없습니다. 이미 OK를 눌렀을 때 int 1024를 얻고 난 것으로 정의되었습니다. 그냥 사용하고 있습니다. – hashDefine

0

메시지 상자를 닫으려면 msg.close() (자본금없이)으로 전화해야합니다.

클릭 한 경우 확인 버튼을 클릭하면 QMessageBox::exec() 메서드의 반환 값은 QMessageBox::Ok이 될 수 있습니다. 실제로 QMessageBox::Close (귀하의 경우 msg.Close)은 해당 버튼 중 하나 일 수 있습니다.

관련 문제