如何在显示时调整 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);
显示后也不会调整大小。
我还想也许我可以把它放在一个拆分器布局中,然后可以调整大小,但随后控件并没有随着窗口大小而扩展。
有人有什么想法吗?
您可以根据焦点动态更改小部件大小。输入后,将大小放大。当它离开时,使大小变小。
有多种方法可以做到这一点。在我看来,更干净、更简单的方法是在您的小部件上安装事件过滤器。在此事件过滤器中,您将处理 QEvent::FocusIn 和 QEvent::FocusOut 以更改小部件的大小。
在您的情况下,CSS 更改不是要走的路,调整大小也不是。
更方便的方法是使用最小值、固定值、最大值更改宽度/高度(。
如果你想使用 QWidget::setFixedXXX 或一些 QWidget::setMaximumXXX、QWidget::setMinimumXXX 方法设置大小,由你来决定哪种策略。我喜欢 Fixed,但它实际上取决于您的应用程序样式和布局上下文。
事件过滤器的官方文档:(http://doc.qt.io/qt-5/qobject.html#installEventFilter(。
最后我这样做的方法是在表单中添加一个 QLabel 和一个 QTextEdit,然后我右键单击表单和布局>"中断布局"(为什么,我不知道!(,然后我选择这两个小部件并将它们添加到垂直拆分器布局中(通过右键单击表单和布局>"垂直拆分器"(。然后我右键单击表单并添加一个垂直布局,然后将所有重要的布局设置为 MainWidget,并让控件随窗口大小缩放(红色警告图标从 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);
}
我还必须将大小策略设置为在小部件上展开(不确定这是必需的(
- 比较并显示使用最小值(a,b)和最大值(a、b)升序排列的4个数字
- 最小硬币更换问题(自上而下方法)
- Qt VTK交互风格的信号到小部件
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 如何在Qt窗口小部件中使用QStringView(或QStringRef)
- 使用递归的数组的最小值.这是怎么回事
- 为什么在浮点中从大到小会引入更多的误差
- 找到两对数字,使它们的乘积的绝对差最小化
- 如何使用boost::具有嵌套结构和最小代码更改的序列化
- 最大和最小 1 C++函数
- 如何创建一个函数来计算并返回平均值、最大值和最小值
- 我可以做些什么来消除或最小化这种将提供相同功能和行为的代码重复
- 如何将部分流作为参数传递
- 如何在QT中的自定义视频小工具t上绘制矩形
- 在二维数组中查找最小值和最大值?
- 查找矩阵C++中每一列和每一行的最小和最大元素
- 如何找到大于整数的最小数字
- 小字符串优化(调试与发布模式)
- QtDesigner自定义小部件
- C++ 创建小部件数组