【问题标题】:Copy text and placeholders, variables to the clipboard将文本和占位符、变量复制到剪贴板
【发布时间】:2015-06-22 16:55:35
【问题描述】:

在我的应用程序中,我想生成随机数或字符串,并在其前面添加文本。对我来说重要的是文本不会出现在我的窗口中,而是被复制到剪贴板。

int randomnumber = rand() % 46 + 1;

QClipboard *cb = QApplication::clipboard();
cb->setText("Just a test text. And here we have a placeholder! %i", randomnumber);

QClipboard 可以很好地处理纯文本(在本例中“只是一个测试文本。这里我们有一个占位符!”)。但我也想复制随机数的占位符,以便复制的文本如下所示:

只是一个测试文本。在这里我们有一个占位符! 42

很遗憾,我收到错误消息: 从“int”到“QClipboard::Mode”的无效转换

是否可以将文本、占位符等复制到剪贴板而不仅仅是纯文本?

【问题讨论】:

  • setText 不像 printf。你需要 QString::arg() 这里。

标签: c++ qt clipboard


【解决方案1】:

您没有正确使用函数setText。规范原型是来自documentationtext(QString & subtype, Mode mode = Clipboard) const

您要做的是提前组装您的QString,然后使用它来填充剪贴板。

QString message = QString("Just a test text. 
     And here we have a placeholder! %1").arg(randomnumber);
cb->setText(message);

请注意,参数是%1 而不是%f。参数编号在Qt 中是连续的。请查看this 文章了解更多信息。

希望有帮助!

【讨论】:

    【解决方案2】:

    在将字符串作为参数传递给cb->setText之前,您必须对其进行格式化。

    这样做:

    QString txt = QString("只是一个测试文本。这里我们有一个占位符!%1").arg(randomnumber);

    然后:

    cb->setText(txt);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-22
      相关资源
      最近更新 更多