所以我正在使用 Qt 制作一个文本编辑器,现在我有一个按钮可以打开一个名为“格式化文本”的对话框。我希望它的工作方式类似于记事本中名为“字体”的对话框,您可以在其中从一些下拉列表中选择一些文本属性,它会向您显示文本的外观。现在我可以在其中选择字体样式、字体颜色和字体大小并点击预览,它会在对话框中的一个框中向您显示文本的外观。但是,我有一个名为“okay”的按钮,它应该更改突出显示的文本或您将要输入的文本,但我不知道如何在主窗口上显示这些更改。这 。ui 文件是私有的,许多已经创建的函数和指针在每个 ui 文件中都是相同的,所以如果我将 ui 文件更改为公共文件,我必须更改一大堆东西。无论如何可以给我一个简单的答案吗?我试图以尽可能少的混乱来做到这一点。对于我的技能水平的人来说,更多的编码和更少的混乱比更少的编码和更多的混乱要好。抱歉,这是一个巨大的段落,我没有提供任何代码,但我认为代码不是必需的,但是如果您确实需要一些代码,我很乐意分享。感谢您的帮助和时间。我希望你们有一个愉快的夜晚。对于我的技能水平的人来说,更多的编码和更少的混乱比更少的编码和更多的混乱要好。抱歉,这是一个巨大的段落,我没有提供任何代码,但我认为代码不是必需的,但是如果您确实需要一些代码,我很乐意分享。感谢您的帮助和时间。我希望你们有一个愉快的夜晚。对于我的技能水平的人来说,更多的编码和更少的混乱比更少的编码和更多的混乱要好。抱歉,这是一个巨大的段落,我没有提供任何代码,但我认为代码不是必需的,但是如果您确实需要一些代码,我很乐意分享。感谢您的帮助和时间。我希望你们有一个愉快的夜晚。
user1581100
问问题
151 次
1 回答
1
QDialog
有一个名为finished()的信号,您可以将此信号与您的插槽连接。为了完成您的工作,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(QStringList settings)
{
settings << ui->combobox->currentItem(); // font name as example
}
于 2012-09-11T00:30:24.870 回答