Russian Qt Forum
Сентябрь 30, 2024, 18:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: 1 [2]   Вниз
  Печать  
Автор Тема: connect и динамический отправитель  (Прочитано 8701 раз)
Bepec
Гость
« Ответ #15 : Апрель 30, 2013, 08:20 »

Ичика, если создавать табы при помощи метода addTab(QWidget*, QString), то этот метод вернёт установленный виджет (просто при создании в дизайнере вкладки, текущим становится виджет вкладки). Так же присутствует метод setCurrentWidget.

А разбивать логику на классы необходимо. Для того, чтобы при добавлении нового виджета не надо было менять уже существующие классы. Таким образом получается система плагинов. - Можно подставить любой класс с этими методами.

Записан
Rosster
Гость
« Ответ #16 : Апрель 30, 2013, 12:28 »

зачем городить классы-наследники, если к виджетам уже есть доступ.
можно же сразу все описать в 1 месте в зависимости от текущего индекса таба.
так же будет понятнее и по "затрам" дешевле.
или я не так понял задачу?
Верес правильно написал: меньше ошибок, больше мобильности.

Типа код:
Код:
// текущий виджет получаем.
QWidget * point = ui.tabWidget->currentWidget();
// и слот такой вот вызываем
QObject::invokeMethod(point, "add");
// строку меняем "add" на "del" или другое любое наименование слота.
Это куда вставлять? В MainWindow::slAdd() {}? А смысл? Там стоит более логичное manager->add(); которое работает на ура.
Записан
Bepec
Гость
« Ответ #17 : Апрель 30, 2013, 12:41 »

Эммм... У вас присутствует менеджер. А я предлагаю без менеджера как бы.

Напрямую. Без левых наследований и прочего. Т.е.

Код:
// запихиваем ваши классы в табвиджет
ui.tabWidget->addTab(вашиКлассы, "именаВашихКлассов");

//и слот нажатия кнопки у главного виджета
void on_pushButton_add_clicked()
{
    // текущий виджет получаем.
    QWidget * point = ui.tabWidget->currentWidget();
    // и слот такой вот вызываем
    QMetaObject::invokeMethod(point, "add");
    // строку меняем "add" на "del" или другое любое наименование слота.
}

« Последнее редактирование: Апрель 30, 2013, 14:05 от Bepec » Записан
Rosster
Гость
« Ответ #18 : Апрель 30, 2013, 12:53 »

Верес, в моем случае не подойдет, т.к. в мэнеджере еще много методов общих для всех виджетов,поэтому без него никак. Но ваш способ понадобится в более простых случаях, мне это пригодится.
Спасибо всем)
Записан
Bepec
Гость
« Ответ #19 : Апрель 30, 2013, 14:05 »

Кхм. Что мешает вызывать все ваши методы через способ, предложенный мной? Улыбающийся

Этот метод позволяет вызвать любой слот у любого класса, наследника QWidget. С любыми параметрами.

PS недоумение.
Записан
Rosster
Гость
« Ответ #20 : Апрель 30, 2013, 14:59 »

Кхм. Что мешает вызывать все ваши методы через способ, предложенный мной? Улыбающийся

Этот метод позволяет вызвать любой слот у любого класса, наследника QWidget. С любыми параметрами.

PS недоумение.

Верес, в моем случае не подойдет, т.к. в мэнеджере еще много методов общих для всех виджетов,поэтому без него никак.
Я же написал...Мне полюбому создавать родит. класс,т.к. много ОБЩИХ методов для всех виджетов, которые я тут не расписывал. Ну а вирт. функции позволяют не забыть в каком-нибудь виджете обязательный метод.
Записан
Bepec
Гость
« Ответ #21 : Апрель 30, 2013, 15:02 »

Кхм... кхм.... кхм..... Ладно, не буду настаивать, делай как хочешь Веселый

Как грится - я дал тебе знание, теперь обрети силу Веселый
Записан
Страниц: 1 [2]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.07 секунд. Запросов: 21.