Использование setCentralWidget в подклассе QWidget?

Не уверен, правильно ли я задаю этот вопрос, потому что я новичок в C++ и Qt. Но, скажем, у меня есть подкласс QWidget:

class childofqwidget : public QWidget

Могу ли я передать указатель на объект подкласса в функцию-член setCentralWidget QMainWindow? Что-то вроде этого:

mainlayout = new childofqwidget;
setCentralWidget(mainlayout);

Причина, по которой я спрашиваю, заключается в том, что я создал подкласс QWidget, который имеет макет с текстовым полем и некоторыми кнопками. Я хотел бы вставить это как центральный виджет объекта QMainWindow. Это возможно? Если нет, есть ли лучший способ сделать это?


person Justin    schedule 17.05.2012    source источник
comment
Вы должны завести привычку называть имена классов с заглавной буквы для каждого нового слова. childofwidget следует назвать ChildOfWidget. Имена переменных и методов должны начинаться со строчной и заглавной буквы для каждого нового слова: mainlayout должно называться mainLayout. (Это соглашение об именах Qt.)   -  person leemes    schedule 18.05.2012


Ответы (1)


Да, это прекрасно, и это обычный способ сделать это.

(Вызывать переменную layout, когда она widget, немного необычно/запутанно, но это просто имя.)

person Mat    schedule 17.05.2012
comment
Окей круто. Я попытался сделать это, и он не скомпилировался... Компилятор сказал мне, что setCentralWidget принимает только аргументы типа (*QWidget). Вероятно, я что-то неправильно реализовал. Позвольте мне повторить... - person Justin; 17.05.2012
comment
Ваш фрагмент должен работать, пока mainlayout объявлен как childofqwidget *mainlayout. - person Mat; 17.05.2012
comment
Потрясающий. Приступил к работе; предыдущая ошибка была связана с неправильной реализацией с моей стороны. Спасибо. - person Justin; 17.05.2012