码迷,mamicode.com
首页 > 其他好文 > 详细

Qt 按键控制combobox

时间:2019-08-28 18:41:32      阅读:124      评论:0      收藏:0      [点我收藏+]

标签:结果   qstring   break   ide   none   --   from   执行   上下   

需求:

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

标签:结果   qstring   break   ide   none   --   from   执行   上下   

原文地址:https://www.cnblogs.com/shuoguoleilei/p/11425634.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!