Есть QTabWidget tabs
. В нем лежат виджеты вкладок, в каждой вкладке есть layout, в этом layout'e QScrollArea
со своим layout'om.
И при получении конкретной вкладки в любой другой функции я пишу QWidget* tab = new tabs->widget(0)
. И мне нужно поместить на эту вкладку в layout QScrollArea
виджеты и чтобы не писать
tab->layout()->widget->layout()->addWidget(someWidget)
я хочу перегрузить функцию layout(), чтобы для вызова
tab->layout()
возвращался сразу layout внутри QScrollArea
, но в QWidget функция layout()
не виртуальная, поэтому при
tab->layout()
все равно возвращается первый layout в виджете вкладки.
Можно это как-нибудь обойти без
dynamic_cast<Tab*>(tab)->layout()
Если функция не виртуальная, то обычными способами ее перегрузить не получиться, но можно попробовать перекрыть ее. Унаследовать класс и в дочерний класс добавить метод с той же семантикой, он и перекроет ее. Вот пример:
#include <string>
#include <iostream>
class A
{
public:
std::string get()
{
return "A::get";
}
};
class B : public A
{
public:
std::string get()
{
return "B::get";
}
};
int main()
{
std::cout << B().get() << '\n';
}
Результат http://ideone.com/sFtqKH Но если обьект по полиморфизму станет родительским, то вызовется метод класса А
Виртуальный выделенный сервер (VDS) становится отличным выбором
Является ли дурным тоном описывать и реализовывать несколько классов в одном файле-заголовочнике и одномсрр-файле соответственно? Например,...
При создании шаблона проекта С++ в Visual Studio 2015 Update 3, проект собирается, шаблон создается, устанавливается, но в нем отсутствует файл с исходным...
Вопрос по C++При передаче обычной переменной в функцию создается, как я понимаю, её копия
Как вставить заданное слово? Конкретно интересует функция InputWordЕсли я правильно понимаю, то я сначала должен увеличить память на кол-во символов...