因此,我正在使用Qt制作文本编辑器,现在我有一个按钮可以打开一个名为“格式化文本”的对话框。我希望它的工作方式类似于记事本中称为“字体”的对话框,在该对话框中,您可以从一些下拉列表中选择一些文本属性,并向您显示文本的外观。现在,我可以使用它了,您可以在其中选择字体样式,字体颜色和字体大小,然后单击预览,它会在对话框的框中显示您的文本。但是,我有一个名为“ okay”的按钮,该按钮应该用于更改突出显示的文本或您要键入的文本,但是我不知道如何在主窗口上显示这些更改。 .ui文件是私有的,每个ui文件中许多已经制作的函数和指针都是相同的,因此,如果我将ui文件更改为pubic,则必须进行很多更改。反正可以给我一个简单的答案吗?我正在尝试尽可能减少混乱。对于我这个水平的人来说,更多的编码和更少的混乱比更少的编码和更多的混乱更好。抱歉,这是一个完整的段落,我没有提供任何代码,但是我认为代码不是必需的,但是,如果您确实需要一些代码,我将很乐意与您分享。
感谢您的帮助和时间。希望大家晚上愉快。
最佳答案
QDialog
有一个名为finished()的信号,您可以将此信号连接到插槽。为了完成您的工作,将QSettings
或为简单起见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
}