将文本和占位符、变量复制到剪贴板

Copy text and placeholders, variables to the clipboard

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

int randomnumber = rand() % 46 + 1;

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

QClipboard 可以很好地处理纯文本(在本例中 "Just a test text. And here we have a placeholder!")。但我也想复制随机数的占位符,以便复制的文本如下所示:

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

遗憾的是我收到错误信息: 从 'int' 到 'QClipboard::Mode'

的无效转换

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

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

你想要做的是提前 assemble 你的 QString 然后用它来填充剪贴板。

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

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

希望对您有所帮助!

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

只需这样做:

QString txt = QString("Just a test text. And here we have a placeholder! %1").arg(randomnumber);

然后:

cb->setText(txt);