QFrame 不会根据父小部件的大小调整调整其大小
QFrame is not adjusting its size as per the size adjustment of parent widget
我创建了一个小部件类。此类将维护 QFrame(QWidget 类型(的child_1和 QGridLayout 类型的child_2。child_2将为自己增加child_1。child_1将有一个QGridLayout类型的子级,最终QGridLayout将有一些按钮。
*我无法根据父小部件的调整调整QFrame子(child_1(的大小。另外,我正在尝试设置QFrame子级的大小,即父级的大小。即使这样也没有发生。我尝试使用方法setFrameRect((,setGeometry((和resize((。我已经实现了evenhandler resizeEvent(QResizeEvent event(。但是当应用程序运行时,我正在尝试调整小部件的大小,但我看到日志没有打印。
主.cpp
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Widget w;
w.show();
return a.exec();
}
小部件.h
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
private:
Ui::Widget *ui;
QGridLayout* p_mPanelLayout; // Instance of QGridLayout.
FrameDemo* framePtr;
};
小部件.cpp
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
p_mPanelLayout = new QGridLayout(this);
framePtr = new FrameDemo(this);
framePtr->createPushButtonUtility();
p_mPanelLayout->addWidget(framePtr, 0, 0, Qt::AlignCenter);
}
Widget::~Widget()
{
delete ui;
}
帧演示.h
#define LOG(message){
qDebug()<< __LINE__<<__FUNCTION__<<message<<"n";
}
class FrameDemo : public QFrame
{
Q_OBJECT
public:
FrameDemo(QWidget *parent = 0);
void createPushButtonUtility();
private:
QGridLayout* m_pLayout;
protected:
void resizeEvent(QResizeEvent * event);
};
帧演示.cpp
FrameDemo::FrameDemo(QWidget *parent):QFrame(parent)
{
m_pLayout = new QGridLayout(this);
// m_pLayout->setRowStretch(0, parent->width());
QRect defaultRect = rect();
QSize currentSize = size();
LOG(currentSize.height())
LOG(currentSize.width())
int xP1 = 0;
int yP1 = 0;
int xP2 = 0;
int yP2 = 0;
defaultRect.getCoords(&xP1, &yP1, &xP2, &yP2);
LOG(xP1)
LOG(yP1)
LOG(xP2)
LOG(yP2)
LOG(parent->width())
LOG(defaultRect.height())
// QRect newRect = QRect(xP1,yP1,parent->width(),defaultRect.height());
// QRect newRect = QRect(0, 0, 0, defaultRect.height());
// setFrameRect(newRect);
resize(QSize(400, currentSize.height()));
setFrameShape(QFrame::Box);
// setGeometry(0, 0, parent->width(), defaultRect.height());
}
void FrameDemo::createPushButtonUtility()
{
QPushButton *readButton = new QPushButton("Read", this);
m_pLayout->addWidget(readButton, 0, 0, Qt::AlignCenter);
QPushButton *writeButton = new QPushButton("Write", this);
m_pLayout->addWidget(writeButton, 0, 1, Qt::AlignCenter);
QPushButton *updateButton = new QPushButton("Update", this);
m_pLayout->addWidget(updateButton, 0, 2, Qt::AlignCenter);
}
void FrameDemo::resizeEvent(QResizeEvent *event)
{
LOG("resize")
}
我设法解决了这个问题。
我错过了在父小部件中实现事件处理程序 resizeEvent(QResizeEvent *event(。我实现了相同的方法,并调用了FrameDemo的resizeEvent。在这个事件处理程序中,我调用了 setGeometry((。
相关文章:
- 调整布局上的 QGraphicsView 小部件的大小
- 在Qt中自动调整小部件的大小
- 对我的 c++ 金字塔分配进行小调整?我应该怎么做?
- 将动态分配的数组的大小调整为较小的大小C++
- QGridLayout 3x3 网格调整小部件的大小
- QFrame 不会根据父小部件的大小调整调整其大小
- 如何在显示时调整 QPlainTextEdit 小部件的大小
- QToolButton 的位置在调整大小或移动父小部件时不会改变
- 当我在QT上调整图像大小时,如何将重点放在小部件的中间点
- 可滚动的背景,上面有可调整大小的Qt小部件
- 如何从类外监听小部件的调整大小事件
- QT-检测所有小部件何时首次完成调整大小
- 在QSplitter中调整小部件的大小
- C++ 创建小部件数组
- 将项目小部件宽度(列表内容)调整为父QListWidget宽度
- 使用Qt,如何使用鼠标向上或向左移动事件来调整小部件的大小
- Qt QSplitter 窗口大小调整时的固定高度小部件
- 如何使Qt小部件可调整大小
- 将 size() 调整为较小的大小是否会丢弃早期 reserve() 所做的保留
- 允许用户在QT5运行时调整小部件的大小