Layout von MainWindow mit KPart speichern.

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
flying sheep
User
Beiträge: 48
Registriert: Donnerstag 17. September 2009, 16:44
Kontaktdaten:

Hi.

Ich bin gerade an einem Editor für Markdown- (und später auch reStructuredText- usw.) -Dateien. Wenn sich hier wer mit den Feinheite von KDE auskennt, erkläre er mir bitte
  1. wie ich das toolbar-layout speichere (und lade)
  2. wie ich am besten die ominöse appnameui.rc-datei nutze (gescheiterter versuch auskommentiert)
  3. wie ich den katepart dazu bringe, die in kate getätigten einstellungen zu nutzen (egal, ob die für katepart oder kate gespeichert werden)
was ich schon habe, ist in der conf-klasse, nutzt aber nicht viel (fenstergröße und -position immerhin)

PS: wow, das forum ist ja dermaßen fix, das hab ich auch noch nicht gesehen… kaum auf „Absenden“ geklickt, schon bin ich in ngerade neu erstellten Thread!
lunar

@flying sheep:
  1. Am Ende von "Markdowner.__init__()" "self.setAutoSaveSettings()" aufrufen. Dadurch geschieht das Laden und Speichern automatisch, die "conf"-Klasse wird überflüssig.
  2. Die appnameui.rc muss in "/usr/share/apps/markdowner" liegen. In "Markdowner.__init__()" musst Du dann "self.setupUi()" aufrufen. Den Versuch, die Datei beim Aufruf des Programms dorthin zu kopieren, finde ich allerdings etwas merkwürdig. Ich würde das lieber während der Installation des Programms erledigen. Zudem musst Du nicht "kde4-config" aufrufen, um an den Pfad zu gelangen. "KStandardDirs.locate('appdata', 'markdownerui.rc')" geht auch, solange Du "KApplication()" vorher erzeugst.
  3. Keine Ahnung, müsste ich mich selbst erst einlesen. Ich bin mir aber fast sicher, dass Anwendungen, die katepart benutzen, auch immer von kate unabhängige Editoreinstellungen nutzen. Ich kann mich jedenfalls nicht daran erinnern, dass KDevelop die Einstellungen von kate übernommen hätte und umgekehrt.
Die "pyqtSlot"-Dekoratoren sind in der aktuellen Version nicht nötig. Wenn Slots explizit verbunden werden, kann man jedes aufrufbare Objekt verwenden, ohne dass es dezidiert als Slot markiert werden müsste. Das ist nur nötig, wenn man Plugins für den Designer schreibt, oder "QMetaObject.connectSlotsByName()" nutzen möchte.
flying sheep
User
Beiträge: 48
Registriert: Donnerstag 17. September 2009, 16:44
Kontaktdaten:

danke für die antworten!

werde das testen, sobald ich wieder auf linux bin, nur wegen den dekoratoren: ich hab in der doku (k.a. welche) gelesen, dass das schneller ist.

außerdem markiert es die funktionen, die wirklich slots sind :)
flying sheep
User
Beiträge: 48
Registriert: Donnerstag 17. September 2009, 16:44
Kontaktdaten:

dank deinem ersten tipp ist das ganze viel einfacher geworden und kann mehr.

sogar der zustand des inspectors (geschlossen/offen) wird gespeichert. genial, danke dir!
lunar

@flying sheep: Ich glaube, im Bezug auf die Dekoratoren hast Du "pyqtSlot()" mit "SLOT()" verwechselt.
flying sheep
User
Beiträge: 48
Registriert: Donnerstag 17. September 2009, 16:44
Kontaktdaten:

hä? SLOT ist doch das c++-makro, welches funktioniert wie die old-style signals & slots, oder?
also wäre in c++ „Slot“ in folgendem beispiel „SLOT("slotname")“

Code: Alles auswählen

object.connect(Signal_Widget, Signal, Slot_Widget, Slot)
ich verwende nur:

Code: Alles auswählen

class X(QWidget):
	my_signal = QtCore.pyqtSignal(int)
	def __init__(self):
		QWidget.__init__(self)
		self.my_signal.connect(self.my_slot)
	
	@pyQtSlot(int)
	def my_slot(self, i):
		print(i / 2)
	
	def emit_my_signal(self):
		self.my_signal.emit(100)
lunar

@flying sheep: Du hättest doch behauptet, die Dekoratoren wären „schneller“. Ich habe daraufhin lediglich vermutet, dass Du in diesem Bezug "pyqtSlot()" mit "SLOT()" verwechselt haben könntest, da in der Dokumentation über "SLOT()" ein Geschwindigkeitsvorteil erwähnt war. Allerdings gilt dasselbe wohl auch für "pyqtSlot()", was ich vorhin allerdings noch nicht wusste. Verzeih die Verwirrung.
flying sheep
User
Beiträge: 48
Registriert: Donnerstag 17. September 2009, 16:44
Kontaktdaten:

lunar hat geschrieben:@flying sheep: Du hättest doch behauptet, die Dekoratoren wären „schneller“. Ich habe daraufhin lediglich vermutet, dass Du in diesem Bezug "pyqtSlot()" mit "SLOT()" verwechselt haben könntest, da in der Dokumentation über "SLOT()" ein Geschwindigkeitsvorteil erwähnt war. Allerdings gilt dasselbe wohl auch für "pyqtSlot()", was ich vorhin allerdings noch nicht wusste. Verzeih die Verwirrung.
verstehe. dann hab ich dir altem hasen ja auf die weise noch was beibringen können :)

danke für alles. (derzeit häng ich nur am threading)
lunar

Meine Antwort. Ich bin mir allerdings nicht sicher, ob ich Dein Problem richtig verstanden habe und der beschriebene Ansatz mithin Deinen Anforderungen entspricht.
flying sheep
User
Beiträge: 48
Registriert: Donnerstag 17. September 2009, 16:44
Kontaktdaten:

lunar hat geschrieben:Meine Antwort. Ich bin mir allerdings nicht sicher, ob ich Dein Problem richtig verstanden habe und der beschriebene Ansatz mithin Deinen Anforderungen entspricht.
sie hat mir zumindest geholfen, besser zu verstehen, was man beim threaden darf und was nicht, danke :)
Antworten