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();

} 

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

时间: 2024-11-02 17:27:38

Qt 按键控制combobox的相关文章

中断——按键控制LED状态

程序功能:按键控制LED状态,中断实现. 现象描述:当按下k键时,LED0总会闪烁,从而影响其他LED. 注意:用杜邦线把P3.2引脚(INT0)与开关K引脚相连. 程序: ORG 0000H LJMP MAIN ORG 0003H ;外部中断0入口 LJMP INT0 ORG 0200H MAIN:SETB EA ;开启总中断 SETB EX0 ;开启外部中断 0,即P3.2引脚 CLR IT0 ;设置成 低电平触发方式 SJMP $ ;主程序只等待中断 INT0:DEC P1 ;外部中断 0

图形化编程娱乐于教,Kittenblock实例,电子相册,按键控制效果

跟很多学生聊过,很多学生不是不努力,只是找不到感觉.有一点不可否认,同样在一个教室上课,同样是一个老师讲授,学习效果迥然不同.关键的问题在于,带入感,我能给出的建议,就是咬咬牙,坚持住,没有学不会的知识.会陆续分享图形化编程的经验,希望能够做成一个专题.如果您觉得有用,就给点个赞吧.涉及的软件包括scratch3.0 (.sb3).Python.Kittenblock. 程序解读:电子相册,按键控制效果 知识点:随机数.虚像特效,图形.事件.按键 重点:按键控制效果 涉及的软件:scratch3

OSG漫游:实现按键控制的操作器

OSG提供了几种manipulator(操作器),已经能胜任很多场合了.但玩过射击类游戏的都比较熟悉使用按键的方式控制人物角色的移动,自己也想来实现一个,于是参考了OSG程序设计 一书,进行实现. 功能: W或者↑箭头:前进 S或者↓箭头:后退 A或者←箭头:向左 D或者→箭头:向右 Q:左旋转 E:右旋转 鼠标左键拖动:左右视角 鼠标右键拖动:上下视角 鼠标中键:放大或者缩小 +:加速移动 -:减速移动 关键点 1.视口矩阵的运算方式: osg::Matrixd CustomManipulat

外部按键 控制 LED 中断 (参考 http://www.oschina.net/question/565065_115196?sort=time )

转帖: http://www.oschina.net/question/565065_115196?sort=time 实验目的: mini2440开发板上有6个按键,将其中的前4个按键设为外部中断方式,当按下K1时,LED1亮:当按下K2时,LED2亮:当按下K3时,LED3亮:当按下K4时,LED4亮. 首先我们先了解一下 mini2440 按键和LED接口:     GPBCON 地址: 0x56000010 (LED 灯可以参考流水灯的随笔) 按键接口电路如图2所示,当按键没有按下时,G

基于arm开发板四个按键控制四个灯亮

基于s5pv2410,cortex a8的四个按键每一个按键点了对应的灯 对于用汇编来编程的话不难,重点在于数据手册,电路图,管脚的看懂 直接上代码 .globl _start_start: ldr r0,=0xe0200c40 @按键控制寄存器的地址 ldr r1,[r0] bic r1,r1,#0xff @bic一次只能清8为每四位控制一个按键 bic r1,r1,#0xff<<8 @把16位清为零控制四个按键为输入方式 str r1,[r0] @配置按键为输入方式 ldr r0,=0xe

51单片机:独立按键与矩阵按键控制数码管

一,独立按键注意一下几点 >按下的时候,电压被拉低,所以IO口要传低电平( 0x0 ) >按下的时候要消除抖动 ( 延时10ms ),在判断,是否还是低电平,再做业务处理 下面这段程序,就是通过一个独立按键连接到p1口,控制静态数码管的 一段 进行亮和灭的切换. #include <reg52.h> sbit key_control = P1^0; sbit led = P0^0; typedef unsigned char u8; typedef unsigned int u16

CC2530学习路线-基础实验-GPIO 按键控制LED灯亮灭(2)

目录 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 1.2 CC2530相关寄存器 1.3 CC2530中断走向图 1.4 使用C语言为51单片机编写中断程序 1.5 *函数指针 2. 程序代码 THE END 1.前期预备知识 1.1 新大陆Zigbee模块按键电路图 由上图可知,Zigbee模块的SW1按钮连接在P1.2端口上,当SW1导通,P1.2电平从3.3V被拉低接地.所以P1.2输入模式为下拉输入. 1.2 CC2530相关寄存器 寄存器名称 寄存器作用 寄存器描述 P

独立按键控制跑马灯的速度

#include "REG52.H" #define const_voice_short 40 //蜂鸣器短叫的时间#define const_key_time1 15  //按键去抖动延时的时间#define const_key_time2 15  //按键去抖动延时的时间#define const_key_time3 15  //按键去抖动延时的时间 void initial_myself();void initial_peripheral();void delay_short(u

基于Arduino的按键控制LED实验

I/O 口的意思即为INPUT 接口和OUTPUT 接口,到目前为止我们设计的小灯实验都还只是应用到Arduino 的I/O 口的输出功能,这个实验我们来尝试一下使用Arduino的I/O 口的输入功能即为读取外接设备的输出值,我们用一个按键和一个LED 小灯完成一个输入输出结合使用的实验,让大家能简单了解I/O 的作用.按键开关大家都应该比较了解,属于开关量(数字量)元件,按下时为闭合(导通)状态.完成本实验要 用到的元件如下: 按键开关*1 红色M5 直插LED*1 220Ω电阻*1 10K