C++ Qt:resize(int,int)不';我不能正常工作
我要更新什么来调整“this”的大小? 父窗口小部件?“这个”小部件? 或者两者都有?如何使用我的40x40大小引发重画事件 刚刚尝试过这个,但小部件“精灵/图像”的大小没有改变:C++ Qt:resize(int,int)不';我不能正常工作,c++,qt,user-interface,resize,C++,Qt,User Interface,Resize,我要更新什么来调整“this”的大小? 父窗口小部件?“这个”小部件? 或者两者都有?如何使用我的40x40大小引发重画事件 刚刚尝试过这个,但小部件“精灵/图像”的大小没有改变: qconnectorblob::qconnectorblob(QWidget *parent, bool type, QNodeWidget *myPWidget, long myID, long connectToID) : QRadioButt
qconnectorblob::qconnectorblob(QWidget *parent, bool type,
QNodeWidget *myPWidget, long myID, long connectToID) :
QRadioButton(parent)
{
setAcceptDrops(true);
this->setAutoExclusive(false);
mNodeWidget = myPWidget;
mtype = type;
//Resize for Android
this->resize(40,40);
您可以调整qconnectorblob小部件的大小,而不是父部件的大小。从文件: 尺寸:QSize 此属性保存小部件的大小,不包括任何窗口框架。 如果小部件在调整大小时可见,它会立即收到一个调整大小事件(resizeEvent())。如果小部件当前不可见,则保证在显示之前接收事件。 如果大小超出由minimumSize()和maximumSize()定义的范围,则会对其进行调整。 默认情况下,此属性包含一个值,该值取决于用户的平台和屏幕几何图形。 警告:在resizeEvent()内调用resize()或setGeometry()可能导致无限递归。 注意:将大小设置为QSize(0,0)将导致小部件不显示在屏幕上。这也适用于windows 因此,您可以重新实现resizeEvent并在此事件中执行某些操作。您也可以调用repaint(),它将调用paintEvent,但我认为resizeEvent更合适 用法示例:
//Resize for Android
this->setFixedSize(40,40);
this->setMinimumSize(40,40);
this->setMaximumSize(40,40);
this->resize(40,40);
this->repaint();
按钮在每次调整大小时都会有新的随机颜色。明确使用
重绘几乎总是一个错误。在这种情况下当然是这样。把那条线扔了
您需要决定是手动调整小部件的大小,还是根据布局调整大小。这两者不能同时并存。如果小部件由布局管理,则显式的resize
调用为不可操作。如果小部件不由布局管理,则setxxsize
调用为不可操作,因为它们仅设置布局系统使用的属性。Setfixedsize设置最小和最大大小。如果使用布局,请选中此项:同时尝试使用resizeEvent,而不是paintEvent。
void MyButton::resizeEvent(QResizeEvent *event)
{
this->setStyleSheet("QRadioButton {"
"color: rgb("+QString::number(qrand()%255)+","+QString::number(qrand()%255)+","+QString::number(qrand()%255)+");"
"background-color: rgb("+QString::number(qrand()%255)+","+QString::number(qrand()%255)+","+QString::number(qrand()%255)+')'
+"}");
}