Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Qt:resize(int,int)不';我不能正常工作_C++_Qt_User Interface_Resize - Fatal编程技术网

C++ Qt:resize(int,int)不';我不能正常工作

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

我要更新什么来调整“this”的大小? 父窗口小部件?“这个”小部件? 或者两者都有?如何使用我的40x40大小引发重画事件

刚刚尝试过这个,但小部件“精灵/图像”的大小没有改变:

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)+')'
                       +"}");
}