如何让QTableWidget中单元格的控件居中

weixin_38059644 2019-09-19 04:51:46
如何让QTableWidget中单元格的控件居中
...全文
3903 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
cpp_learners 2021-03-16
  • 打赏
  • 举报
回复
引用 4 楼 panyhoo 的回复:
[quote=引用 2 楼 cpp_learner 的回复:]
QCheckBox *checkBox[] = { new QCheckBox, new QCheckBox, new QCheckBox };

	int column[] { 9, 11, 13 };
	for (int i = 0; i < 3; i++) {
		QWidget *widget = new QWidget;
		QHBoxLayout *hLayout = new QHBoxLayout();
		hLayout->addWidget(checkBox[i]);
		hLayout->setMargin(0);
		// 设置水平居中
		hLayout->setAlignment(widget, Qt::AlignCenter);
		// 设置部件周围的左、上、右、下边距
		hLayout->setContentsMargins(10, 0, 10, 0);
		// 添加布局
		widget->setLayout(hLayout);
		// 添加单元格
		ui.tableWidget->setCellWidget(row, column[i], widget);

	}
hLayout->setAlignment(widget, Qt::AlignCenter); 是不是应该改为 hLayout->setAlignment(checkBox[i], Qt::AlignCenter);[/quote] 看清楚,我已经将checkBox[i]添加到widget里面里,然后再设置它居中的。
panyhoo 2021-03-16
  • 打赏
  • 举报
回复
引用 2 楼 cpp_learner 的回复:
QCheckBox *checkBox[] = { new QCheckBox, new QCheckBox, new QCheckBox };

	int column[] { 9, 11, 13 };
	for (int i = 0; i < 3; i++) {
		QWidget *widget = new QWidget;
		QHBoxLayout *hLayout = new QHBoxLayout();
		hLayout->addWidget(checkBox[i]);
		hLayout->setMargin(0);
		// 设置水平居中
		hLayout->setAlignment(widget, Qt::AlignCenter);
		// 设置部件周围的左、上、右、下边距
		hLayout->setContentsMargins(10, 0, 10, 0);
		// 添加布局
		widget->setLayout(hLayout);
		// 添加单元格
		ui.tableWidget->setCellWidget(row, column[i], widget);

	}
hLayout->setAlignment(widget, Qt::AlignCenter); 是不是应该改为 hLayout->setAlignment(checkBox[i], Qt::AlignCenter);
panyhoo 2021-03-16
  • 打赏
  • 举报
回复
引用 8 楼 cpp_learner 的回复:
[quote=引用 7 楼 panyhoo 的回复:][quote=引用 5 楼 cpp_learner 的回复:][quote=引用 4 楼 panyhoo 的回复:][quote=引用 2 楼 cpp_learner 的回复:]
QCheckBox *checkBox[] = { new QCheckBox, new QCheckBox, new QCheckBox };

	int column[] { 9, 11, 13 };
	for (int i = 0; i < 3; i++) {
		QWidget *widget = new QWidget;
		QHBoxLayout *hLayout = new QHBoxLayout();
		hLayout->addWidget(checkBox[i]);
		hLayout->setMargin(0);
		// 设置水平居中
		hLayout->setAlignment(widget, Qt::AlignCenter);
		// 设置部件周围的左、上、右、下边距
		hLayout->setContentsMargins(10, 0, 10, 0);
		// 添加布局
		widget->setLayout(hLayout);
		// 添加单元格
		ui.tableWidget->setCellWidget(row, column[i], widget);

	}
hLayout->setAlignment(widget, Qt::AlignCenter); 是不是应该改为 hLayout->setAlignment(checkBox[i], Qt::AlignCenter);[/quote] 看清楚,我已经将checkBox[i]添加到widget里面里,然后再设置它居中的。[/quote] 我这里测试了也是把checkBox[i]添加到widget里面,然后hLayout->setAlignment(widget, Qt::AlignCenter); 没有办法居中, 但是hLayout->setAlignment(checkBox[i], Qt::AlignCenter);就可以居中,不知道什么原因 只是提个建议,如果你那边可以实现那挺好[/quote] 都搞乱了: 首先是将checkBox添加到hLayout里,然后才将hLayout添加到widget中,最后将widget添加到单元格中的。从而达到居中效果。 虽然控件是可以居中,但是却无法拿到checkBox对象,我试了很久,尝试了各种办法都无法拿到对象,拿到的都是NULL;这个BUG你可以研究一下。[/quote] 好的,感谢大佬指点
cpp_learners 2021-03-16
  • 打赏
  • 举报
回复
引用 7 楼 panyhoo 的回复:
[quote=引用 5 楼 cpp_learner 的回复:][quote=引用 4 楼 panyhoo 的回复:][quote=引用 2 楼 cpp_learner 的回复:]
QCheckBox *checkBox[] = { new QCheckBox, new QCheckBox, new QCheckBox };

	int column[] { 9, 11, 13 };
	for (int i = 0; i < 3; i++) {
		QWidget *widget = new QWidget;
		QHBoxLayout *hLayout = new QHBoxLayout();
		hLayout->addWidget(checkBox[i]);
		hLayout->setMargin(0);
		// 设置水平居中
		hLayout->setAlignment(widget, Qt::AlignCenter);
		// 设置部件周围的左、上、右、下边距
		hLayout->setContentsMargins(10, 0, 10, 0);
		// 添加布局
		widget->setLayout(hLayout);
		// 添加单元格
		ui.tableWidget->setCellWidget(row, column[i], widget);

	}
hLayout->setAlignment(widget, Qt::AlignCenter); 是不是应该改为 hLayout->setAlignment(checkBox[i], Qt::AlignCenter);[/quote] 看清楚,我已经将checkBox[i]添加到widget里面里,然后再设置它居中的。[/quote] 我这里测试了也是把checkBox[i]添加到widget里面,然后hLayout->setAlignment(widget, Qt::AlignCenter); 没有办法居中, 但是hLayout->setAlignment(checkBox[i], Qt::AlignCenter);就可以居中,不知道什么原因 只是提个建议,如果你那边可以实现那挺好[/quote] 都搞乱了: 首先是将checkBox添加到hLayout里,然后才将hLayout添加到widget中,最后将widget添加到单元格中的。从而达到居中效果。 虽然控件是可以居中,但是却无法拿到checkBox对象,我试了很久,尝试了各种办法都无法拿到对象,拿到的都是NULL;这个BUG你可以研究一下。
panyhoo 2021-03-16
  • 打赏
  • 举报
回复
引用 5 楼 cpp_learner 的回复:
[quote=引用 4 楼 panyhoo 的回复:][quote=引用 2 楼 cpp_learner 的回复:]
QCheckBox *checkBox[] = { new QCheckBox, new QCheckBox, new QCheckBox };

	int column[] { 9, 11, 13 };
	for (int i = 0; i < 3; i++) {
		QWidget *widget = new QWidget;
		QHBoxLayout *hLayout = new QHBoxLayout();
		hLayout->addWidget(checkBox[i]);
		hLayout->setMargin(0);
		// 设置水平居中
		hLayout->setAlignment(widget, Qt::AlignCenter);
		// 设置部件周围的左、上、右、下边距
		hLayout->setContentsMargins(10, 0, 10, 0);
		// 添加布局
		widget->setLayout(hLayout);
		// 添加单元格
		ui.tableWidget->setCellWidget(row, column[i], widget);

	}
hLayout->setAlignment(widget, Qt::AlignCenter); 是不是应该改为 hLayout->setAlignment(checkBox[i], Qt::AlignCenter);[/quote] 看清楚,我已经将checkBox[i]添加到widget里面里,然后再设置它居中的。[/quote] 我这里测试了也是把checkBox[i]添加到widget里面,然后hLayout->setAlignment(widget, Qt::AlignCenter); 没有办法居中, 但是hLayout->setAlignment(checkBox[i], Qt::AlignCenter);就可以居中,不知道什么原因 只是提个建议,如果你那边可以实现那挺好
  • 打赏
  • 举报
回复
nice~,很有帮助.
cpp_learners 2021-01-10
  • 打赏
  • 举报
回复
QCheckBox *checkBox[] = { new QCheckBox, new QCheckBox, new QCheckBox };

	int column[] { 9, 11, 13 };
	for (int i = 0; i < 3; i++) {
		QWidget *widget = new QWidget;
		QHBoxLayout *hLayout = new QHBoxLayout();
		hLayout->addWidget(checkBox[i]);
		hLayout->setMargin(0);
		// 设置水平居中
		hLayout->setAlignment(widget, Qt::AlignCenter);
		// 设置部件周围的左、上、右、下边距
		hLayout->setContentsMargins(10, 0, 10, 0);
		// 添加布局
		widget->setLayout(hLayout);
		// 添加单元格
		ui.tableWidget->setCellWidget(row, column[i], widget);

	}

477

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧