0

所以我正在使用 Qt 制作一个文本编辑器,现在我有一个按钮可以打开一个名为“格式化文本”的对话框。我希望它的工作方式类似于记事本中名为“字体”的对话框,您可以在其中从一些下拉列表中选择一些文本属性,它会向您显示文本的外观。现在我可以在其中选择字体样式、字体颜色和字体大小并点击预览,它会在对话框中的一个框中向您显示文本的外观。但是,我有一个名为“okay”的按钮,它应该更改突出显示的文本或您将要输入的文本,但我不知道如何在主窗口上显示这些更改。这 。ui 文件是私有的,许多已经创建的函数和指针在每个 ui 文件中都是相同的,所以如果我将 ui 文件更改为公共文件,我必须更改一大堆东西。无论如何可以给我一个简单的答案吗?我试图以尽可能少的混乱来做到这一点。对于我的技能水平的人来说,更多的编码和更少的混乱比更少的编码和更多的混乱要好。抱歉,这是一个巨大的段落,我没有提供任何代码,但我认为代码不是必需的,但是如果您确实需要一些代码,我很乐意分享。感谢您的帮助和时间。我希望你们有一个愉快的夜晚。对于我的技能水平的人来说,更多的编码和更少的混乱比更少的编码和更多的混乱要好。抱歉,这是一个巨大的段落,我没有提供任何代码,但我认为代码不是必需的,但是如果您确实需要一些代码,我很乐意分享。感谢您的帮助和时间。我希望你们有一个愉快的夜晚。对于我的技能水平的人来说,更多的编码和更少的混乱比更少的编码和更多的混乱要好。抱歉,这是一个巨大的段落,我没有提供任何代码,但我认为代码不是必需的,但是如果您确实需要一些代码,我很乐意分享。感谢您的帮助和时间。我希望你们有一个愉快的夜晚。

4

1 回答 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 回答