【问题标题】:Taking data from a Dialog in Qt and using it in a Ui从 Qt 中的对话框中获取数据并在 Ui 中使用它
【发布时间】:2012-09-11 00:06:09
【问题描述】:

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

【问题讨论】:

    标签: c++ qt user-interface dialog qmainwindow


    【解决方案1】:

    QDialog 有一个名为finished() 的信号,您可以将此信号连接到您的插槽。要完成您的工作,请将QSettings 或为简单起见将QStringList 传递给对话框设置(负责更改字体、颜色...),QStringList 将保存用户定义的设置,关闭对话框后,遍历@987654326 @成员提醒主窗口。 伪代码将如下所示 类编辑器:

    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
    
    }
    

    【讨论】:

    • 似乎不太复杂,感谢您的回答。如果我在 30 分钟内没有得到更好的答案,我会标记你的答案。
    猜你喜欢
    • 2014-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-08
    • 2022-11-05
    • 2019-10-04
    • 1970-01-01
    相关资源
    最近更新 更多