今天早上一来,我老大叫我在widget上点击右键加上一个菜单,并相应其响应的功能,因为我成刚接触Qt,所以看了下QtGUI编程这本书,做出来,记录下来,说不定哪天还用得上啊!
废话不多说,直接上代码:
方法一:
m_text = QTextCodec::codecForLocale();
ui->tableWidget->addAction(new QAction(m_text->toUnicode("设置为默认的服务器"), this));
ui->tableWidget->setContextMenuPolicy(Qt::ActionsContextMenu);
但是我在想,怎么响应菜单点击的选项那?如是就进行改写了,代码如下:
//m_set_default和m_redraw是定义的QAction对象,定义为类的属性
m_text = QTextCodec::codecForLocale();
m_set_default = new QAction(m_text->toUnicode("设置为默认的服务器"), this);//新津活动
m_redraw = new QAction(m_text->toUnicode("刷新"), this); //新建活动
ui->tableWidget->addAction(m_set_default);//添加活动
ui->tableWidget->addAction(m_redraw);//添加活动
ui->tableWidget->setContextMenuPolicy(Qt::ActionsContextMenu);//使用Qt::CustomContextMenu。表示需要自己写出右键显示菜单
//响应刷新活动的信号和槽
connect(m_redraw, SIGNAL(triggered()), this, SLOT(right_redraw()));
之所以选择新建活动的方式而不用方法一的原因是为了方便建立信号和槽的关系,以便在槽中做出相应的处理,如上我是发出一个进行屏幕刷新的槽。