• 7022阅读
  • 4回复

QComboBox 类似MFC的SelChanging吗 [复制链接]

上一主题 下一主题
离线yanzhuliang
 

只看楼主 正序阅读 楼主  发表于: 2010-04-09
【提前声明】
Qt Assistant Version 4.6.2

【问题】
我希望在QComboBox下拉的时候处理一些操作,但是QComboBox只有以下几个信号:
Signals
void activated ( int index )
void activated ( const QString & text )
void currentIndexChanged ( int index )
void currentIndexChanged ( const QString & text )
void editTextChanged ( const QString & text )
void highlighted ( int index )
void highlighted ( const QString & text )

想到MFC中CComboBox控件有CBN_DROPDOWN消息,我就很郁闷,为啥QT没有呢,为啥,这是为啥呢??
哪位仁兄遇到过此问题,如果解决了请分享下吧,小弟先标识感谢了。

activated 可以考虑使用,但是有个问题,它是在激活任何一个下拉列表项时发送的信号,所以不能保证是我想要的那个索引项;
highlighted 是任何一个下拉项高亮时发送的信号,也存在上面activated 一样的问题。
离线yanzhuliang

只看该作者 4楼 发表于: 2010-04-10
非常感谢3楼的兄弟,这就是我想要的。
虽然我知道构成QComboBox控件的一部分是QListView,但是从来没研究过QListView。吸取教训了。
离线luoyes

只看该作者 3楼 发表于: 2010-04-09
阁下是想要获得在列表展开时的消息吧?
这个消息在QT里应该是comboBox内的listView的QEvent::FocusIn事件。
你可以用事件过滤器,
首先安装事件过滤: ui.comboBox->view()->installEventFilter( this );
然后重写你的comboBox所在视图类的eventFilter()函数
在该函数里这样截获:
if( pWatched == ui.comboBox->view() && pEvent->type() == QEvent::FocusIn )
{
    // 填写你要做的事
}

我已测试成功
离线yangfanxing
只看该作者 2楼 发表于: 2010-04-09

void currentIndexChanged ( int index )

不是这个么?
PHPWind好恶心。。。不想看这种界面。。。
离线yanzhuliang

只看该作者 1楼 发表于: 2010-04-09
我自己先顶起,一定会有人像我这么干,我也算抛砖引玉吧。
快速回复
限100 字节
 
上一个 下一个