crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> Изменение одного виджета через другой, QMainWidget + QDialog
QTchaynik
  опции профиля:
сообщение 3.3.2012, 11:55
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 5
Регистрация: 3.3.2012
Пользователь №: 3246

Спасибо сказали: 0 раз(а)




Репутация:   0  


Имеется главная форма mainwidget.ui с label1 и диалог dialog.ui c label2 и кнопками "ok" и "cansel"
В диалоге пользователь меняет шрифт label2 через FontDialog и подтверждает кнопкой "ok".
Как сделать, чтобы при нажатии кнопки "ok" на диалоге, менялся шрифт label1 на главной форме?

в dialog.cpp
connect(ui->buttonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(ui->buttonBox, SIGNAL(rejected()), this, SLOT(reject()));


PS начинающий QT и С++, заранее благодарю


Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
RazrFalcon
  опции профиля:
сообщение 3.3.2012, 12:40
Сообщение #2


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


1) По нажатию "Ок" в дочернем окне оно закрывается, а потом уже меняется шрифт? Тогда:
void MainWindow::open_newWindow_slot()
{
    MyDialog dialog(0);
    if (dialog.exec()) {
        ui->label->setFont(dialog.newFont()); // newFont - это публичная функция класса MyDialog, которая должна возвращать имя шрифта, который выбран в чекбоксе
    }
}
2) Если у вас дочернее окно не закрывается, а как бы аналог "Apply". То есть изменения вступают в силу сразу же. То в конструктор класса MyDialog добавьте ссылку на MainWindow, как то так:
public:
    explicit MyDialog(MainWindow *window, QWidget *parent = 0);



Оба варианта уже 100 раз поднимались на этом форуме, в поиске много примеров.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 1.12.2024, 21:29