Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

QWidget ne reaguje na resize ako je mdiSubWindow

[es] :: Python :: QWidget ne reaguje na resize ako je mdiSubWindow

[ Pregleda: 1740 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon QWidget ne reaguje na resize ako je mdiSubWindow03.04.2009. u 22:54 - pre 183 meseci
Ocigledno da nesto ne primecujem ili u kodu, ili u dokumentaciji.

Python 2.6, PyQT 4.4.4., Windows XP SP2.

Uglavnom, kada dodajem QWidget kao mdiSubWindow ne reaguje na resize() metodu; vidi se samo title bar. Kada obrisem tu liniju gde dodajem taj QWidget u QMdiArea-u, onda resize odradi normalno.

Kod:
Code:

class MainGui():

    def __init__(self, parent=None):
        self.parent = parent
        parent.resize(1000, 600)
        parent.setWindowTitle("Main")

        parent.mdiArea = QMdiArea()
        parent.setCentralWidget(parent.mdiArea)


class ChildGui():

    def __init__(self, parent):
        self.parent = parent
        self.parent.setAttribute(Qt.WA_DeleteOnClose)
        self.parent.resize(200, 200)
        self.parent.setWindowTitle("Child")
        self.lineEdit = QLineEdit(self.parent)


class Child(QWidget):

    def __init__(self, parent):
        QWidget.__init__(self)
        self.parent = parent
        # sledeci red ako se obrise, radi kao sto bi trebalo
        self.parent.mdiArea.addSubWindow(self)
        self.gui = ChildGui(self)


class Main(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.gui = MainGui(self)
        
        # ovo inace pozivam preko menija, al' uglavnom je svejedno.
        self.newChildAction()

    def newChildAction(self):
        c = Child(self)
        c.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    m = Main()
    m.show()
    sys.exit(app.exec_())


Main se resizuje kako treba, na 1000x600, ali Child nece.

Sta mi je promaklo? :(

Hvala :)
 
Odgovor na temu

kazil
Robert Bašić
Full time PHP dev :)
Bačka Topola - Novi Sad

Član broj: 120044
Poruke: 686
*.dynamic.stcable.net.

Jabber: robertbasic@elitesecurity.org
ICQ: 446475288
Sajt: robertbasic.com


+2 Profil

icon Re: QWidget ne reaguje na resize ako je mdiSubWindow04.04.2009. u 21:17 - pre 183 meseci
OK, provalio sam jedan nacin kako radi, ali ima tu iskusnijih, pa molim da me ispravite ako gresim :)

Child ne nasledjuje QWidget nego QMdiSubWindow, i onda unutar njega napravim jedan novi QWidget, koji postavim ovom QMdiSubWindow-u kao glavni widget. Nove widgete (QLineEdit, QLabel, itd.) stavljam na QWidget, a ne na QMdiSubWindow.

Code:

class MainGui():

    def __init__(self, parent=None):
        self.parent = parent
        parent.resize(1000, 600)
        parent.setWindowTitle("Main")

        parent.mdiArea = QMdiArea()
        parent.setCentralWidget(parent.mdiArea)


class ChildGui():

    def __init__(self, parent):
        self.parent = parent
        self.parent.setAttribute(Qt.WA_DeleteOnClose)
        self.parent.resize(200, 200)
        self.parent.setWindowTitle("Child")
        
        self.widget = QWidget(self.parent)
        self.parent.setWidget(self.widget)

        self.line = QLineEdit(self.widget)
        self.label = QLabel(QString('Test label'), self.widget)

        grid = QGridLayout(self.widget)
        grid.addWidget(self.line, 0, 0, 1, 1, Qt.AlignTop)
        grid.addWidget(self.label, 0, 0, 1, 1, Qt.AlignTop)


class Child(QMdiSubWindow):

    def __init__(self, parent):
        QMdiSubWindow.__init__(self)
        self.parent = parent
        self.parent.mdiArea.addSubWindow(self)
        self.gui = ChildGui(self)


class Main(QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)
        self.gui = MainGui(self)
        
        # ovo inace pozivam preko menija, al' uglavnom je svejedno.
        self.newChildAction()

    def newChildAction(self):
        c = Child(self)
        c.show()

if __name__ == "__main__":
    app = QApplication(sys.argv)
    m = Main()
    m.show()
    sys.exit(app.exec_())
 
Odgovor na temu

[es] :: Python :: QWidget ne reaguje na resize ako je mdiSubWindow

[ Pregleda: 1740 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.