Я пытаюсь получить минимальный пример для приложения, разработанного дизайнером qt с pyqt, включающим QTreeView для работы.
1) я могу запустить приложение таким образом, но если я нажму кнопку, в виджете TreeView не будет отображаться запись, я не получаю никаких сообщений об ошибках, и макет выглядит нормально, есть ли какой-то метод обновления?
если вы ответите, пожалуйста, будьте конкретны, так как я все еще новичок в qt, и большая часть документации написана с примерами на c++, и у меня есть только некоторый опыт работы с базовыми c и python
from PyQt4 import uic, QtGui, QtCore
(Ui_MainWindow, QMainWindow) = uic.loadUiType('main_window.ui')
class MainWindow(QtGui.QMainWindow):
def __init__(self, parent=None):
super().__init__(parent)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.model = QtGui.QStandardItemModel()
self.connect(self.ui.pushButton_NeuesMoebel, QtCore.SIGNAL('clicked()'), self.add_item)
def add_item(self):
t = self.ui.lineEdit_Moebel.text()
if len(t) > 0:
item = QtGui.QStandardItem(t)
self.model.appendRow(item)
self.ui.lineEdit_Moebel.clear()
else:
self.ui.statusBar.showMessage('error: no text in Moebel')
if __name__ == "__main__":
import sys
app = QtGui.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
2) кроме того, есть ли более чистый способ напрямую использовать файл *.ui, чем этот, чтобы напрямую создать подкласс MainWindow этого файла? пользовательский интерфейс кажется немного грязным
3) например, было бы лучше иметь метод add_item в подклассе окна, созданного файлом *.ui, мы должны использовать промежуточный шаг преобразования файла *.ui в файл *.py?