Я работаю над проектом 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(); }
Метод QGridLayout::addWidget ожидает указателя на экземпляр класса, производного от QWidget, поэтому, если GLobj окажется примерно таким:
QGridLayout::addWidget
GLobj
class GLobj : public QWidget { ...
, вы можете сделать :
grid->addWidget(&obj);
как в 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.. :)