[PyQt] What am I doing wrong with QWidget?

Kurt Schwarz kurtschwarz at gmail.com
Sat Sep 19 23:26:20 BST 2009


On Sat, Sep 19, 2009 at 5:09 PM, David Boddie <david at boddie.org.uk> wrote:
>
> On Sat Sep 19 19:27:06 BST 2009, Kurt Schwarz wrote:
>
> > I'm having problems displaying a widget as a child inside a window. The
> > code below should create a window that is 500 x 500 with a red box inside
> > 400 x 400.
> >
> > If I replace self.ChildWidget = AppWidget( self ) with self.ChildWidget =
> > QtGui.QWidget( self ) I get the desired result, what am I doing wrong with
> > AppWidget( ) that would cause it not to display correctly?
>
> I don't think you're doing anything wrong. I quickly rewrote the example in
> C++ and verified that it works.
>
>
> #include <QtGui>
>
> class AppWidget : public QWidget
> {
> public:
>    AppWidget(QWidget *parent = 0) : QWidget(parent) {}
> };
>
> class AppWindow : public QMainWindow
> {
> public:
>    AppWindow() : QMainWindow() {
>        setGeometry( 30, 30, 500, 500 );
>
>        ChildWidget = new AppWidget(this);
>        ChildWidget->setGeometry( 10, 10, 400, 400 );
>        ChildWidget->setStyleSheet( "background-color: #ff0000" );
>    }
>
> private:
>    QWidget *ChildWidget;
> };
>
> int main(int argc, char *argv[])
> {
>    QApplication app(argc, argv);
>    AppWindow MainWindow;
>    MainWindow.show( );
>    return app.exec( );
> }
>
>
> In your Python version, if you change the base class of AppWidget to QFrame,
> it works, so there's definitely something strange happening.
>
> David

Hey David thanks for trying it out in C++, I tried changing the base
class to QFrame and it does appear to be working correctly on my end
as well.

I guess the QWidget thing is a bug.



More information about the PyQt mailing list