Find length of QString text. [SOLVED]
-
Hi...
This could be one of those "I'm going about this wrong" things. So, as you read - speak up if there is a (completely) different way to approach this problem.I would like to lay out a grid of buttons. The text is from a SQL data base. I would like to use a grid of 3 by 3 buttons. But some times there is so much text I can't fit everything into such a small button. So then I would like to use a 2 by 3 grid of buttons. Or even a 1 by 3 grid should the button labels be really long.
I'm thinking if I check all my QStrings for length and find the longest one, I can make a smart button grid layout choice.
Trouble is, the string is of type QString and I have been hunting all around for something like QString->size but have yet to find it.
I know there is something I'm missing here. Anyone know what it is?
-thanks
-
Oh, I'm an idiot.
Here's the solution in case someone stumbles onto this thread:
I've an array of buttons of type QPushButton.
I suspect the type of buttons[which_button]->text is QString.
Ok, so if we look up QString we see there is a public function called size.
So, we can do something like this:@int max_string_length, which_button, this_string_length;
max_string_length = 0;
for(which_button = 0; which_button < 10; which_button++)
{
this_string_length = buttons[which_button]->text().size(); // Wow.
if(this_string_length > max_string_length);
{
max_string_length = this_string_length;
}
}@ -
Note that QString::count() do return the number of characters in the string. This is not necessarily related to the number of glyphs (things painted aka. what a normal user thinks of as a character). Due to the wonders of unicode the QString containing 'Ä' might have a count of 1 or 2:-)
The QString::count() is also not necessarily related to the number of pixels needed to render the string.
E.g. the representation of "iiiii" is probably shorter than the representation of "MMMM", even which it having 5 instead of 4 letters (of course depending on the font used). You can use QFontMetrics to find the size in pixels a rendering of a QString will take. I think for your use case that would be the a best thing to do.