QT中实现QLineEdit变成圆角以及QCombox大半空白,小部分下拉框样式

  在QT中QSS的主要功能是使界面的表现与界面的元素分离,使得设计皮肤与界面控件分离的软件成为可能。

  我现在用的是在UI中直接设置样式表,也可以自己代码设置。

第一步:

在UI界面选择自己想设置的空间选择改变样式表

第二步:

在样式表输入如下代码之后点击apply就可以直接设置QLineEdit为圆角

border: 1px solid gray;/*设置边框的粗细,以及颜色*/
border-radius: 10px;/*设置圆角的大小*/
padding: 0 8px;/*如果没有内容光标在开始往后移动0.8像素点*/
selection-background-color: darkgray;
   

 编辑QComBox同理

border: 1px solid gray;
subcontrol-origin: padding;

subcontrol-position: top right;
width: 20px;
border-left-width: 1px;
border-left-color: darkgray;
border-left-style: solid; /* just a single line */
border-top-right-radius: 3px; /* same radius as the QComboBox */
border-bottom-right-radius: 3px;

就可以实现如上所示效果

Qt,将鼠标事件转换为键盘事件并不直接内置在一个函数里,因为这两个输入源是独立的。但是,你可以通过模拟键盘事件的方式来间接实现类似的效果。以下是一种常见的做法: 首先,你需要监听鼠标事件,例如鼠标点击或鼠标移动事件: ```cpp connect(ui->yourMouseArea, &QMouseEventFilter::mousePressEvent, this, &YourClass::mouseToKeyboardPress); connect(ui->yourMouseArea, &QMouseEventFilter::mouseMoveEvent, this, &YourClass::mouseToKeyboardMove); ``` 然后,在相应的槽函数,你可以根据鼠标位置生成并发送键盘事件。例如,当鼠标点击时,你可以发送一个类似于按下某个键的事件: ```cpp void YourClass::mouseToKeyboardPress(const QMouseEvent &event) { // 模拟按下键 emit keyPressEvent(QKeyEvent(QEvent::KeyPress, Qt::Key_YourDesiredKey, Qt::NoModifier, event.pos().x(), event.pos().y())); } // 对应的移动事件处理函数: void YourClass::mouseToKeyboardMove(const QMouseEvent &event) { if (/* 根据鼠标移动的条件 */ ) { emit keyPressEvent(QKeyEvent(QEvent::KeyRelease, Qt::Key_YourDesiredKey, Qt::NoModifier, event.pos().x(), event.pos().y())); } } ``` 这里,`Qt::Key_YourDesiredKey`应该替换为你想要映射的实际键盘键。 请注意,这种方法仅适用于一些简单的映射,复杂的交互可能需要更精细的控制。此外,频繁地模拟键盘事件可能会对性能造成影响,所以在实际应用需谨慎使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值