【问题标题】:From a MessageDialog how to read variables when i use pango markup?当我使用 pango 标记时,如何从 MessageDialog 读取变量?
【发布时间】:2020-09-14 15:00:08
【问题描述】:

如何使用变量在消息对话框文本中使用 pango 标记

例如这段代码

void usb_boot::creation(){
//Gtk::MessageDialog dialogue(*this, listeDeroulante.get_active_text());
std::string message("Type de formatage : " + type), type1, chemin1;
Gtk::MessageDialog *dialogue = new Gtk::MessageDialog("Résumé", true, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO);
dialogue->set_title("Résumé");
dialogue->set_message("<span weight='bold'>message</span>",true);
dialogue->set_secondary_text("<b>listeDeroulante.get_active_text()</b>", true);
dialogue->set_default_response(Gtk::RESPONSE_YES);
int result = dialogue->run();

set_messageset_secondary_text 必须打印变量,但只是“看到”字。 有没有办法像变量一样读取?

【问题讨论】:

  • 类似... std::stringstream ss; ss &lt;&lt; "&lt;span weight='bold'&gt;" &lt;&lt; message &lt;&lt; "&lt;/span&gt;"; dialogue-&gt;set_message(ss.str().c_str(),true); ...?
  • 尝试并工作。谢谢

标签: c++ markup gtkmm pango messagedialog


【解决方案1】:

虽然std::stringstream 解决方案有效,但我建议使用简单的string concatenation,通过std::stringoperator+

#include <gtkmm.h>

int main(int argc, char **argv)
{
    auto app = Gtk::Application::create(argc, argv, "so.question.q63886899");
    
    Gtk::Window w;
    w.show_all();

    {
        // Unformatted messages:
        std::string primaryMessage = "Some message...";
        std::string secondaryMessage = "Some more message details...";

        Gtk::MessageDialog dialog(w, "Message dialog", true, Gtk::MESSAGE_QUESTION, Gtk::BUTTONS_YES_NO);
        dialog.set_title("Title");

        // Add pango markup tags through string concatenation:
        dialog.set_message("<span weight='bold'>" + primaryMessage + "</span>", true);
        dialog.set_secondary_text("<b>" + secondaryMessage + "</b>", true);

        dialog.run();
    }

    return app->run(w);
}

使用此解决方案,无需额外引入type

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-18
    相关资源
    最近更新 更多