[Solved]Size of pushbuttons
-
Hello,
I have created an array of buttons, 6x7. I had not specified any size for these while creating them. So they must have been created in some default size.
Now that i have the array of equal sized buttons, I need to find out their size so as to put the images on them. how to i do that? I could not find any function such as, get size or get height or get width.
Thank you
-
"from the docs :":http://doc.qt.nokia.com/4.7/qwidget.html#size-prop
bq. size : QSizeThis property holds the size of the widget excluding any window frame.
bq. If the widget is visible when it is being resized, it receives a resize event (resizeEvent()) immediately. If the widget is not currently visible, it is guaranteed to receive an event before it is shown.
The size is adjusted if it lies outside the range defined by minimumSize() and maximumSize().
By default, this property contains a value that depends on the user's platform and screen geometry.
Warning: Calling resize() or setGeometry() inside resizeEvent() can lead to infinite recursion.
Note: Setting the size to QSize(0, 0) will cause the widget to not appear on screen. This also applies to windows.
See also pos, geometry, minimumSize, maximumSize, resizeEvent(), and adjustSize(). -
"QPushButton":http://doc.qt.nokia.com/latest/qpushbutton.html extends "QWidget":http://doc.qt.nokia.com/latest/qwidget.html so you can use "geometry()":http://doc.qt.nokia.com/latest/qwidget.html#geometry-prop to retrieve width and height from the returned "QRect":http://doc.qt.nokia.com/latest/qrect.html.
-
eddy,
In the docs, I found,
@
int QSize::height () const @Returns the height.
How do i call the function height()?? using obj of QSize??
This is my code. I jus need to find the height and width of any button
@
cellBut[i][j]=new QPushButton();
connect(cellBut[i][j],SIGNAL(clicked()),this,SLOT(onClickAction()));
@Thank you
-
"size()":http://doc.qt.nokia.com/latest/qwidget.html#size-prop return "QSize":http://doc.qt.nokia.com/latest/qsize.html object, where you can call "height()":http://doc.qt.nokia.com/latest/qsize.html#height
-
I'm sorry alfah, i can not understand your English clearlly. But, the size() function will return the widget's size(as we know QSize), as Eddy mentioned before, i think you need know some concept of geometry/bounding-rect.
[quote author="alfah" date="1311752432"]could u tell me how to go about it to find the size of any one of the pushbuttons?[/quote]
what do you mean alfah ? Can you give us a more detailed description ?
-
Hey everybody,
im sorry to restart this thread, but the following code gives me values 480 and 640
@
cellBut[i][j]=new QPushButton();
connect(cellBut[i][j],SIGNAL(clicked()),this,SLOT(onClickAction()));
ht=cellBut[0][0]->size().height();
wd=cellBut[0][0]->size().width();
@by no means this is the size of the buttons, think its the screen size!!!!
I need pushbutton ht and width
Thank you
-
eddy,
Yup i did,
@
for(int i=0;i<6;i++)
{
for(int j=0;j<7;j++)
{cellBut[i][j]=new QPushButton(); connect(cellBut[i][j],SIGNAL(clicked()),this,SLOT(onClickAction())); ht=cellBut[i][j]->size().height(); wd=cellBut[i][j]->size().width(); } }
@
ht and wd gives me 640 and 480 respectivvely. which i think is the screen size and not individual button size.
:( -
what Chuck is saying is that you didn't use a parent or add them to a layout. That way they get a size.
have a look at this quick and dirty example:
@ int rows = 6;//this is convenient in case you want to alter the numbers
int cols = 7;
QPushButton* cellBut[rows][cols] ;for(int i=0;i<rows;i++) { for(int j=0;j<cols;j++) { cellBut[i][j]=new QPushButton(this); //remark the use of a parent here // connect(cellBut[i][j],SIGNAL(clicked()),this,SLOT(onClickAction()));//better way see below } } qDebug() << cellBut[0][0]->size().height(); qDebug() << cellBut[0][0]->size().width();@
you might have a look at "QSignalMapper":http://doc.qt.nokia.com/4.7/qsignalmapper.html#details. There is a nice example of what you try to achieve.
-