为什么我不能在这里使用QString :: arg函数?

s4e*_*eed -1 c++ qstring qt

您知道在任何需要QString对象作为参数的地方,您只能使用c样式字符串.例如,showMessage函数需要QString.但是我将一个C风格的字符串传递给了这个函数,每件事都没问题.我的意思是在这里我们可以把它想象 "%1 a sample text"成一个QString对象!也许!

statusBar()->showMessage("%1 a sample text");
Run Code Online (Sandbox Code Playgroud)

但为什么我们不能使用这段代码:

statusBar()->showMessage("%1 a sample text".arg("This is "));
Run Code Online (Sandbox Code Playgroud)

For*_*veR 5

因为implicit-conversionQString将被使用,传递的时候const char[]发挥作用,没有implicit-conversion,没有调用函数,因此,您要调用的方法argconst char[],这是不正确,构建QString

statusBar()->showMessage(QString("%1 a sample text").arg("This is "));
Run Code Online (Sandbox Code Playgroud)

一切都会好的.