PyQt4 - okienka

0

Cześć,

Po kliknięciu w kontrolkę na MainWindow, otwiera się QDialog, na którym są m.in. Zapisz / Anuluj.
W jaki sposób można obsłużyć "Zapisz" ? (Chodzi mo głównie o to w jaki sposób zamnkąć / ukryć okno QDialoga, bez zamykania okna MainWindow)

Program piszę w PyQt, jednak przypuszczam, że w Qt (C++) będzie to bardzo podobnie.

0

W zasadzie są dwie możliwości:

  1. Slot w klasie dialogu, który obsługuje to co ma się tam robić
  2. Lub w zależności czy dialog został zaakceptowany czy nie zrobienie tego w MainWindow, co wydaje mi się mniej ładnym rozwiązaniem.
0

W kodzie sygnału "clicked()" Twoich przycisków...

Zapisz:

self.dialog.accept()

Anuluj:

self.dialog.reject()

A self.dialog to drugi parametr metody setupUi Twojego okienka.

Zrozumiałem, że implementujesz własne okno dialogowe, a nie gotowe w stylu:

dialog=QtGui.QFileDialog()
dialog.setDefaultSuffix("py")
filename=str(dialog.getOpenFileName(None,u"Wskaż plik Pythona zawierający dane z obwieszczenia...","", "Skrypt Python (*.py)"))
if filename:
	if self.db.WszystkieLekiUpdate(filename):
		odp = QtGui.QMessageBox.information(None, 'Komunikat', u"Import bazy leków zakończony powodzeniem", QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
	else:
		odp	= QtGui.QMessageBox.critical(None, u'Błąd', u"Nie udało się załadować bazy leków. Upewnij się, że nazwa pliku nie zawiera polskich znaków, a także znaków specjalnych oraz upewnij się, że pochodzi z pewnego źródła.", QtGui.QMessageBox.Ok, QtGui.QMessageBox.Ok)
0

Okno zrobiłem w Designerze i konwertuję je na .py.

Ale tak właściwie, to jaka jest różnica pomiędzy slotem accept(), a reject() ?
Pytam, ponieważ w efekcie - okna się zamykają oraz muszę oprogramować sloty - więc accept i reject ma ten sam skutek - chyba, że o czymś nie wiem ?

0

Nie wiesz o czymś :)

No dobra... masz fragment:

wid.show()
if wid.exec_()==QtGui.QDialog.Accepted:
    ...
else:
    pass

wid jest typu QDialog.

Pojaśniło się :) ?

1 użytkowników online, w tym zalogowanych: 0, gości: 1