c++ - 如果位置大于屏幕尺寸,如何在 QLayout 内移动小部件?
问题描述
#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMainWindow>
#include <QTableWidget>
#include <QHeaderView>
#include <QGridLayout>
#include <QWidget>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QWidget *widget = new QWidget(this);
QGridLayout *layout = new QGridLayout();
layout->setSizeConstraint(QLayout::SetFixedSize);
for (int i = 0; i < 10; ++i) {
QTableWidget *table = new QTableWidget(this);
InitializeQtableWidget(table, 3, 5);
layout->addWidget(table);
}
widget->setLayout(layout);
setCentralWidget(widget);
}
MainWindow::~MainWindow()
{
delete ui;
}
void MainWindow::InitializeQtableWidget(QTableWidget *table, const int &rows, const int &columns)
{
table->setRowCount(rows);
table->setColumnCount(columns);
const int tableColumnWidth = 60;
const int tableRowHeight = 35;
for(int i = 0; i < columns; ++i)
table->setColumnWidth(i, tableColumnWidth);
table->verticalHeader()->setFixedWidth(tableColumnWidth);
table->horizontalHeader()->setFixedHeight(tableRowHeight + 5);
table->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
table->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
table->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
table->setFixedSize(table->horizontalHeader()->length() + table->verticalHeader()->width(),
table->verticalHeader()->length() + table->horizontalHeader()->height());
}
解决方案
您需要为此编写自己的布局实现。或者您可以查看一些开源解决方案并适应您的需求。看看这个。
推荐阅读
- r - R中函数中时间序列对象的调用列表
- java - Java 8:如何使用正则表达式列出与模式不匹配的文件
- php - 如果用于具有多个属性的选择,为什么 filter_input 返回一个空字符串?
- javascript - 箭头函数(它是一个参数)如何接受 x 的值作为 1 并返回它?
- html - 背景图片不覆盖手机
- python - 如何使用 Python 提取音频(WAV)文件中语音信号的感知响度?
- python - python打印语句中的意外无
- php - 为什么单击提交按钮后只选择选择标签的第一个值?
- php - Laravel 5 获取导致 NotFoundHttpException 的 URI
- vba - 让我的范围循环忽略标题行?