Qt有没有直接获得comboBox中showPopup的纵坐标的方法
时间: 2023-08-31 14:26:18 浏览: 53
### 回答1:
可以使用QComboBox的mapToGlobal()方法获取comboBox的全局坐标,再结合QComboBox的height()方法获取comboBox的高度,从而计算出showPopup的纵坐标。具体代码如下:
```cpp
QPoint globalPos = comboBox->mapToGlobal(QPoint(0, comboBox->height()));
int popupY = globalPos.y();
```
注意:这里的comboBox是指QComboBox对象。
### 回答2:
在Qt中,没有直接获得comboBox中showPopup纵坐标的方法。但是可以通过一些方法间接获取。一种常用的方法是使用comboBox的mapToGlobal函数将comboBox的左上角坐标映射到全局坐标系中。然后可以调用comboBox的height()函数获取comboBox的高度。接下来,可以使用这两个值来计算showPopup的纵坐标。具体代码如下:
```
QPoint globalPos = comboBox->mapToGlobal(comboBox->rect().topLeft());
int popupY = globalPos.y() + comboBox->height();
```
上述代码中,comboBox是指向QComboBox对象的指针。通过调用mapToGlobal函数,将comboBox的左上角坐标映射到全局坐标系中,然后使用height函数获取comboBox的高度。最后将这两个值相加,即可得到showPopup的纵坐标。
需要注意的是,上述方法仅适用于默认的comboBox样式。如果使用自定义样式表或修改了comboBox的样式,可能会导致计算得到的坐标不准确。如果遇到这种情况,可能需要进行进一步的调整以适应自定义样式。
### 回答3:
在Qt中,没有直接获得comboBox中showPopup(显示下拉选项框)纵坐标的方法。但是可以通过一些方式来获取该纵坐标。
一种方法是使用comboBox的mapToGlobal函数,将comboBox的坐标系转换为屏幕坐标系。然后,可以使用QCursor类的pos()函数来获取当前鼠标的屏幕坐标。通过计算鼠标在屏幕坐标系中的纵坐标与comboBox在屏幕坐标系中的纵坐标的差值,就可以得到comboBox中showPopup的纵坐标。
另一种方法是使用QComboBox的geometry()函数来获取comboBox的几何位置和大小。然后,使用QApplication类的desktop()函数获取当前屏幕的大小和位置。通过计算comboBox的纵坐标与屏幕的纵坐标的差值,就可以得到comboBox中showPopup的纵坐标。
不过,需要注意的是以上两种方法只能在showPopup显示下拉选项框时才能获取到正确的值。如果在showPopup之前或之后获取纵坐标,可能得到不正确的值。
总的来说,虽然Qt没有提供直接获取comboBox中showPopup纵坐标的方法,但是可以通过一些技巧和计算来获得该值。