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