Как добавить объект в существующий макет в qt? - Решено - PullRequest
0 голосов
/ 17 июня 2020

Я работаю над проектом qt и пытаюсь добавить объект в качестве виджета в свой макет, как я могу это сделать?

int main(int argc, char *argv[])
{

        QApplication app(argc, argv);
        GLobj obj; //this is the object I want to add and it extends QGLWidget
        QWidget *window = new QWidget;
        QGridLayout *grid = new QGridLayout;

        grid->addWidget(&obj,0,0,4,5);//it works

        window->setLayout(grid);            
        window->show();
        return app.exec();
 }

Ответы [ 2 ]

2 голосов
/ 17 июня 2020

Метод QGridLayout::addWidget ожидает указателя на экземпляр класса, производного от QWidget, поэтому, если GLobj окажется примерно таким:

class GLobj : public QWidget
{
...

, вы можете сделать :

grid->addWidget(&obj);
0 голосов
/ 17 июня 2020

как в do c указано здесь ,

addWidget(*Widget, row, column, rowspan, colspan)

поэтому замените

grid->addWidget(obj);//I'm not able to do it..

на

grid->addWidget(obj, 1, 1, 2, 2); //Now I'm able to do it.. :)
...