显示时如何调整 QPlainTextEdit 小部件的大小
How to resize QPlainTextEdit widget when displayed
我有一个 QT GUI 应用程序,它有一个垂直布局,所有控件都展开以填充布局。如果我将 QTextBox 添加到布局中,它具有固定大小(太大),我可以在设计器或代码中(在 MainWindow 构造函数中)更改它
m_textEdit->setMaximumHeight(3 * RowHeight);
但似乎它已永久修复。当它有焦点时,我想让它变大。
我试过了css
m_textEdit->setStyleSheet("QPlainTextEdit:focus{max-height: 400px}");
我试过在动作中调用的调整大小功能
m_textEdit->resize(m_textEdit->width(), 3 * RowHeight);
也不会在显示后调整大小。
我还想也许我可以把它放在一个可以调整大小的拆分器布局中,但是控件没有随着 window 大小展开。
有什么想法吗?
您可以根据焦点动态更改小部件的大小。输入时,将尺寸调大。当它离开时,将尺寸变小。
有多种方法可以做到这一点。在我看来,更简洁、更简单的方法是为您的小部件安装事件过滤器。
在此事件过滤器中,您将处理 QEvent::FocusIn 和 QEvent::FocusOut 以更改小部件的大小。
CSS 更改不是您的情况,调整大小也不是。
更方便的方法是使用最小值、固定值、最大值更改 width/height。
如果您想使用 QWidget::setFixedXXX 或某些 QWidget::setMaximumXXX、QWidget::setMinimumXXX 方法设置大小,则由您决定采用哪种策略。我喜欢固定的,但它实际上取决于您的应用程序样式和布局上下文。
关于事件过滤器的官方文档:(http://doc.qt.io/qt-5/qobject.html#installEventFilter)。
最后我这样做的方法是在窗体中添加一个QLabel和一个QTextEdit,然后我右键单击窗体和布局->'break layout'(为什么,我不知道!) ,然后我 select 两个小部件并将它们添加到垂直拆分器布局(通过右键单击表单和布局->'vertical splitter')。然后我右键单击表单并添加一个垂直布局,然后将所有重要的布局设置到 MainWidget 并让控件以 window 大小缩放(红色警告图标从 mainwidget 中消失)。为了在启动时获得我想要的垂直比例,我还必须添加以下代码
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QList<int> sizes;
sizes << 1000 << 1;
ui->splitter->setStretchFactor(0,1000);
ui->splitter->setStretchFactor(1,1);
}
我还必须将大小策略设置为在小部件上展开(不确定是否需要)
我有一个 QT GUI 应用程序,它有一个垂直布局,所有控件都展开以填充布局。如果我将 QTextBox 添加到布局中,它具有固定大小(太大),我可以在设计器或代码中(在 MainWindow 构造函数中)更改它
m_textEdit->setMaximumHeight(3 * RowHeight);
但似乎它已永久修复。当它有焦点时,我想让它变大。
我试过了css
m_textEdit->setStyleSheet("QPlainTextEdit:focus{max-height: 400px}");
我试过在动作中调用的调整大小功能
m_textEdit->resize(m_textEdit->width(), 3 * RowHeight);
也不会在显示后调整大小。
我还想也许我可以把它放在一个可以调整大小的拆分器布局中,但是控件没有随着 window 大小展开。
有什么想法吗?
您可以根据焦点动态更改小部件的大小。输入时,将尺寸调大。当它离开时,将尺寸变小。
有多种方法可以做到这一点。在我看来,更简洁、更简单的方法是为您的小部件安装事件过滤器。 在此事件过滤器中,您将处理 QEvent::FocusIn 和 QEvent::FocusOut 以更改小部件的大小。
CSS 更改不是您的情况,调整大小也不是。
更方便的方法是使用最小值、固定值、最大值更改 width/height。
如果您想使用 QWidget::setFixedXXX 或某些 QWidget::setMaximumXXX、QWidget::setMinimumXXX 方法设置大小,则由您决定采用哪种策略。我喜欢固定的,但它实际上取决于您的应用程序样式和布局上下文。
关于事件过滤器的官方文档:(http://doc.qt.io/qt-5/qobject.html#installEventFilter)。
最后我这样做的方法是在窗体中添加一个QLabel和一个QTextEdit,然后我右键单击窗体和布局->'break layout'(为什么,我不知道!) ,然后我 select 两个小部件并将它们添加到垂直拆分器布局(通过右键单击表单和布局->'vertical splitter')。然后我右键单击表单并添加一个垂直布局,然后将所有重要的布局设置到 MainWidget 并让控件以 window 大小缩放(红色警告图标从 mainwidget 中消失)。为了在启动时获得我想要的垂直比例,我还必须添加以下代码
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QList<int> sizes;
sizes << 1000 << 1;
ui->splitter->setStretchFactor(0,1000);
ui->splitter->setStretchFactor(1,1);
}
我还必须将大小策略设置为在小部件上展开(不确定是否需要)