PDA

View Full Version : resize نشدن Qpushbutton در زمان ساخت به صورت Dynamic



returnx
چهارشنبه 03 خرداد 1391, 01:30 صبح
من با کد زیر یکسری دکمه Set می کنم اما اندازه و مختصاتدکمه تغییر نمیکنه:
QGridLayout *i_control_layout=new QGridLayout(this);
QPushButton *i_buttons[9][9]; int i,j,counter=0,x=15,y=15; for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { i_buttons[i][j]= new QPushButton(QString::number(counter),this); i_buttons[i][j]->setMaximumSize(20,20); i_buttons[i][j]->setGeometry(x,y,20,20); connect(i_buttons[i][j],SIGNAL(clicked()),this,SLOT(get_msg())); i_buttons[i][j]->show(); i_control_layout->addWidget(i_buttons[i][j],i,j); counter++; if (x>this->geometry().width()) { x=0; y=y+10; } else { x=x+10; } } } ui->centralWidget->setLayout(i_control_layout);
یعنی این خط عمل نمیکنه:
i_buttons[i][j]->setGeometry(x,y,20,20);
حالا اگه مختصات تغییر نکنه قابل قبوله چون من دارم تو GridLayout بهش سطر و ستون میدم اما سایز چرا تغییر نمیکنه!؟

حامد مصافی
چهارشنبه 03 خرداد 1391, 08:43 صبح
Geometry برای ویدجت‌های درون یک Layout اعمال نمی‌شود، یعنی بی معنی است. وقتی ویدجتی درون یک Layout قرار می‌گیرد برای تنظیم اندازه و نحوه تغییر اندازه آن از خصوصیات sizePolicy, minimumSize, maximumSize استفاده کنید.