![](/img/trans.png)
[英](cin >> int).get() doesn't properly work in Xcode(4.3.3)
[英]Qt: resize(int,int) doesn't work properly
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);
我要更新“ this”调整大小的内容是什么? 父小部件? “此”小部件? 或两者 ? 如何以40x40大小引发重绘事件?
刚刚尝试过,但是小部件“ sprite / image”不会更改其大小:
//Resize for Android
this->setFixedSize(40,40);
this->setMinimumSize(40,40);
this->setMaximumSize(40,40);
this->resize(40,40);
this->repaint();
您调整qconnectorblob小部件(而不是父级)的大小。 从文档:
size:QSize此属性保存窗口小部件的大小,不包括任何窗口框架。 如果在调整窗口小部件大小时可见,则它会立即收到一个调整大小事件(resizeEvent())。 如果该窗口小部件当前不可见,则可以保证在显示该事件之前会收到一个事件。 如果大小超出由minimumSize()和maximumSize()定义的范围,则调整大小。 默认情况下,此属性包含一个取决于用户平台和屏幕几何形状的值。 警告:在resizeEvent()中调用resize()或setGeometry()可能导致无限递归。 注意:将大小设置为QSize(0,0)将导致窗口小部件不出现在屏幕上。 这也适用于Windows。
因此,您可以重新实现resizeEvent并在此事件中执行某些操作。 您还可以调用repaint(),它将调用paintEvent,但我认为resizeEvent更合适。
http://qt-project.org/doc/qt-4.8/qwidget.html#repaint
用法示例:
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)+')'
+"}");
}
每次调整大小时,按钮将具有新的随机颜色。
显式使用repaint
几乎总是一个错误。 当然是这种情况。 只是摆脱那条线。
您需要确定是手动调整窗口小部件的大小,还是由布局调整大小。 两者不能同时存在。 如果窗口小部件是由布局管理的,则显式resize
调用是无操作的。 如果窗口小部件不受布局管理,则setXxxxSize
调用是无操作的,因为它们仅设置布局系统使用的属性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.