Qt 按键控制combobox

Posted shuoguoleilei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Qt 按键控制combobox相关的知识,希望对你有一定的参考价值。

需求:

1、按键控制combobox显示下拉框,收起下拉框

2、按键控制combobox上下选取

3、按键控制combobox光标选取

4、combobox显示滚动条

实现:

combobox初始化:

    //航次选择
    font.setPointSize(14);
    ui->ComboBox_Voyage->setFont(font);
    ui->ComboBox_Voyage->setStyleSheet(QString::fromUtf8(ButtonUnFocus));
    ui->ComboBox_Voyage->view()->setVerticalScrollBarPolicy(Qt::ScrollBarAsNeeded);//设置滚动条
    ui->ComboBox_Voyage->setAttribute(Qt::WA_DeleteOnClose);

按键处理:

void Display_PlayBack::key_Scan()

    QModelIndex itemIndex;
    //----------读取全局变量中的按键信息----------//
    globeData->systemPara.mutex.lock();
    //主线程开启一个按键读取线程
    switch(globeData->systemPara.keyPressedValue)
    
        case KEY_RETURN_SHORT:
        //1、判断焦点所处位置
        //2、执行相应操作
        switch(flag_count)
        
            case 1:
                break;
            case 2:
                break;
            case 3://按下combox
                if( ui->ComboBox_Voyage->isEnabled())//如果航次combox可以选取,那么执行以下操作
                
                    bool_combox = !bool_combox;
                    if( true == bool_combox )
                    
                        //ui->ComboBox_Voyage->QComboBox::showPopup();
                    else
                    
                        QStringList list = ui->ComboBox_Voyage->currentText().split(QString::fromUtf8("航次"));
                        str_voyage = list[1];
                        //ui->ComboBox_Voyage->QComboBox::hidePopup();
                        qDebug()<<"航次="<<str_voyage;
                    
                

                break;
            case 4:
                break;
            case 5:
                break;
            case 6:
                break;
            default:break;
        

        break;
        case KEY_SET_SHORT:

        break;
            case KEY_Left:
            if(true == bool_combox )//如果选中combox
            
                flag_combox--;
                if( flag_combox<=0 )flag_combox=ui->ComboBox_Voyage->count();//combox下拉项只有(搜索结果)个
                itemIndex = ui->ComboBox_Voyage->view()->model()->index(flag_combox-1,0);//combox视图中下拉项编号
                ui->ComboBox_Voyage->view()->selectionModel()->select(itemIndex,QItemSelectionModel::SelectCurrent);//SelectCurrent
                ui->ComboBox_Voyage->setCurrentIndex(flag_combox-1);
                //combox视图选中 固定编号的项目
            else if(true == bool_label_speed)
            
               ;
            else//焦点汇聚到全局控件上
            
                flag_count--;
                if(flag_count<=0)flag_count=6;
            
            break;
        case KEY_Right:
            if(true == bool_combox)//如果选中combox
            
                flag_combox++;
                if( flag_combox>=(ui->ComboBox_Voyage->count()+1) )flag_combox=1;
                itemIndex = ui->ComboBox_Voyage->view()->model()->index(flag_combox-1,0);//获取位置
                ui->ComboBox_Voyage->view()->selectionModel()->select(itemIndex,QItemSelectionModel::SelectCurrent);//选中
                ui->ComboBox_Voyage->setCurrentIndex(flag_combox-1);//设置text
                //combox视图选中 固定编号的项目
            else if(true == bool_label_speed)
            
                ;
            else//焦点汇聚到全局控件上
            
                flag_count++;
                if(flag_count>=7)flag_count=1;
            
            break;
        case keyPressed_None:
            break;
        default:break;
    
    globeData->systemPara.mutex.unlock();

 

 

以上是关于Qt 按键控制combobox的主要内容,如果未能解决你的问题,请参考以下文章

树梅派C编程_结合QT使用

qt语音发送信息按键如何设置

在vs中开发QT时,控制台无输出

qt 实现的电视遥控系统,如何让qt响应来自遥控器的按键信息?

Qt::Key键盘按键说明

qt按键 keypressevent