我的GUI中有一个显示图表的小部件.如果我有多个图表,GUI上的矩形会显示一个图例.
我有一个QStringlist (legendText)
持有传说的文本.如果不需要图例,则为legendText
空.如果有传说,legendText
则会保留文本.
为了找到图例周围的矩形高度,我想执行以下操作:
int height = 10;
QStringList legendText;
...
height = height * (legendText->size() > 0);
...
Run Code Online (Sandbox Code Playgroud)
这是一个好主意/好的风格,乘以int
一个boolean
?我会遇到问题吗?
Tar*_*ama 107
如果有点不清楚,这在技术上很好.
的bool
将被提升到一个int
,因此结果是明确定义的.但是,查看该代码我不会立即获得您想要实现的语义.
我只想写下这样的东西:
height = legendText->isEmpty() ? 0 : height;
Run Code Online (Sandbox Code Playgroud)
这使您的意图更加清晰.
Sin*_*all 32
根据标准(§4.5/ 6),它完全没问题:
类型的prvalue
bool
可以转换为类型的prvalueint
,false
变为零并true
成为一个.
但是,我建议使用isEmpty
而不是比较size
为零height = height * (!legendText->isEmpty());
或者使用条件运算符作为其他答案建议(但仍然isEmpty
代替.size() > 0
)
Sur*_*urt 16
您可以使用条件(三元)运算符:
height = ( legendText->size() >0 ) ? height : 0 ;
Run Code Online (Sandbox Code Playgroud)
AyC*_*yCe 11
也许这个?
if(legendText->isEmpty())
{
height = 0;
}
Run Code Online (Sandbox Code Playgroud)
要么
int height = legendText->isEmpty() ? 0 : 10;
Run Code Online (Sandbox Code Playgroud)