QT 使用过程中问题记录

4 篇文章 0 订阅
4 篇文章 0 订阅

QT版本 5.10.1

问题1:
在菜单,ComboBox下拉框中,使用自定义窗口时,QLineEdit会出现无法输入中文的情况。
原因:
Qt::Popup的使用会导致QTextEdit,TextArea等文本编辑器的焦点丢失。
解决方法:
1、自定义widget,实现Popup效果
2、重写QLineEdit,在showEvent中,调用activvateWindow接口,手动进行激活

问题2:
QListWidgetItem 设置上自定义的Widget后,变化QListWidget大小会出现隐藏掉itemWidget的问题。
原因:
itemWidget本身窗口正常,无任何问题,问题原因仅因为QT内部,计算对应ItemWidget绘制区域失败导致
解决方法:
创建Delegate,重写paint方法,通过QStyleOptionViewItem中的widget属性,以及QModelIndex索引,获取到对应位置的窗口,调用setGeometry接口
代码如下:

void
ListWidgetItemDelegate::paint
(
QPainter* pPainter,
const QStyleOptionViewItem& rOption,
const QModelIndex& nIndex
)const
{
	QStyledItemDelegate::paint(pPainter, rOption, nIndex);
	QListWidget* pListWidget = qobject_cast<QListWidget*>(const_cast<QWidget*>(rOption.widget));
	QWidget* pWidget = pListWidget->itemWidget(pListWidget->item(nIndex.row()));
	if(pWidget )
	{
		pWidget->setGeometry(rOption.rect);
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值