在我的应用程序中,我想生成随机数字或字符串,前面有文字。对我来说重要的是文本不会出现在我的窗口中,而是被复制到剪贴板。
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'
是否可以将文本,占位符等复制到剪贴板而不仅仅是纯文本?
答案 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);