Взятие данных из диалога в Qt и использование их в пользовательском интерфейсе

Итак, я делаю текстовый редактор с использованием Qt, и сейчас у меня есть кнопка, которая открывает диалог «Формат текста». Я хочу, чтобы он работал как диалоговое окно в блокноте, называемое «шрифт», где вы выбираете несколько текстовых атрибутов из некоторых выпадающих списков, и оно показывает, как будет выглядеть ваш текст. Прямо сейчас у меня это работает, где вы можете выбрать стиль шрифта, цвет шрифта и размер шрифта и просмотреть предварительный просмотр, и он показывает вам в окне в диалоговом окне, как будет выглядеть ваш текст. Тем не менее, у меня есть кнопка под названием «хорошо», которая должна изменить выделенный текст или текст, который вы собираетесь напечатать, но я не могу понять, как отобразить эти изменения в главном окне. Файлы .ui являются частными, и многие уже созданные функции и указатели одинаковы в каждом файле пользовательского интерфейса, поэтому, если я изменю файл пользовательского интерфейса на общедоступный, мне придется изменить целый ряд вещей. В любом случае, можете дать мне простой ответ? Я пытаюсь сделать это с минимальным замешательством, насколько это возможно. Больше кода и меньше путаницы лучше, чем меньше кода и больше путаницы для кого-то моего уровня квалификации. Извините, что это один гигантский абзац, и я не предоставил никакого кода, но я не думал, что этот код был необходим, однако, если вам нужен какой-то код, я был бы рад поделиться им.
Спасибо за вашу помощь и ваше время. Я надеюсь, что у вас всех хороший вечер.

0

Решение

QDialog есть сигнал называется законченный(), Вы можете подключить этот сигнал с вашего слота. Чтобы выполнить свою работу, пройдите QSettings или для простоты QStringList в диалоговые настройки (отвечает за изменение шрифта, цвета …), QStringList сохранит пользовательские настройки, после закрытия диалогового окна выполните итерацию QStringList Участник для оповещения Главное окно.
Псевдокод будет выглядеть так
Редактор классов:

Editor::Editor()
{

TextSettings textSettings;
textSettings.setSettings(settings); // settings is a member

connect(textSettings, &finished(int)), this, SLOT(alertEditor(int)))
}

Editor::alertEditor(int s)
{
if(s == 0)
{
for (int i = 0; i < settings.size(); ++i)
settings.at(i).toLocal8Bit().constData(); // extract various user settings
}
}

Класс TextSettings:

TextSettings::TextSettings(QStringList settings)
{
settings << ui->combobox->currentItem(); // font name as example

}
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]