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

时间:2015-06-22 16:55:36

标签: c++ qt clipboard

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

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'

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

2 个答案:

答案 0 :(得分:4)

您未正确使用setText功能。规范原型是documentation中的text(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文章。

希望有所帮助!

答案 1 :(得分:1)

您必须先格式化字符串,然后再将其作为参数传递给cb->setText

这样做:

  

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

然后:

  

CB->的setText(TXT);