从Qt中的对话框获取数据并在Ui中使用

Taking data from a Dialog in Qt and using it in a Ui

本文关键字:Ui 获取 Qt 对话框 数据      更新时间:2023-10-16

所以我正在使用Qt制作一个文本编辑器,现在我有一个按钮可以打开一个名为"格式化文本"的对话框。我希望它的工作方式有点像记事本中名为"字体"的对话框,你可以从一些下拉列表中选择一些文本属性,它会显示你的文本的样子。现在我有了它,你可以选择字体样式、字体颜色和字体大小,然后点击预览,它会在对话框中的一个框中显示你的文本。然而,我有一个名为"OK"的按钮,它应该更改高亮显示的文本或您将要键入的文本,但我不知道如何在主窗口上显示这些更改。ui文件是私有的,并且很多已经生成的函数和指针在每个ui文件中都是相同的,所以如果我将ui文件更改为public,我必须更改一大堆内容。无论如何,能给我一个简单的答案吗?我试着尽可能少地感到困惑。对我这种技术水平的人来说,多编码、少混乱总比少编码、多混乱好。很抱歉,这只是一个巨大的段落,我没有提供任何代码,但我认为代码没有必要,但如果你确实需要一些代码,我很乐意分享。谢谢你的帮助和时间。我希望大家晚上过得愉快。

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
}