在Qt中隐藏或显示QStackedWidget项目

苏雷什

我想显示或隐藏中的项目QStackedWidget当我按下Enter键时,它应该显示一个堆叠的元素,而当我按下时,说一个左键它应该隐藏。我使用QStackedWidgetQListWidget我的代码:

mymainwindow.h

#ifndef MYMAINWINDOW_H
#define MYMAINWINDOW_H

class mymainwindow : public QMainWindow
{
    Q_OBJECT
public:
    mymainwindow();

protected:
  void keyPressEvent(QKeyEvent *event);

private:
  QStackedWidget *stack;
  QListWidget *list;
  QVBoxLayout *vertical;
  QWidget *widget;
};

#endif

mymainwindow.cpp

#include "mymainwindow.h"

mymainwindow::mymainwindow() : QMainWindow()
{
    stack = new QStackedWidget();
    list = new QListWidget();

    stack->addWidget(new QLineEdit("Hello U have clicked the first menu"));
    stack->addWidget(new QLineEdit("Second ListWidget Item"));
    stack->addWidget(new QLineEdit("Last Widget Item"));

    widget = new QWidget();

    QLabel *label = new QLabel("Main Window");

    list->addItem("New Item 1");
    list->addItem("New Item 2");
    list->addItem("New Item 3");

    list->setFixedSize(200,100);

    QVBoxLayout *vertical = new QVBoxLayout();
    vertical->addWidget(label);
    vertical->addWidget(list);
    vertical->addWidget(stack);

    widget->setLayout(vertical);
    setCentralWidget(widget);
}

void mymainwindow::keyPressEvent(QKeyEvent *event)
{
    switch (event->key()) {
    case Qt::Key_Down:
        connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int)));
        break;
    case Qt::Key_Up:
        connect(list, SIGNAL(currentRowChanged(int)), stack, SLOT(setCurrentIndex(int)));
        break;
    case Qt::Key_Left:
        break;
    }
 }
lpapp

您将需要在按键事件处理程序中处理Key_Left和Key_Enter案例。看来您只是想基于这两个按钮的显示和隐藏stackwidget。这是一个简单的QWidget操作,问题与QStackedWidget无关。

您将需要按以下方式更改按键事件代码:

void mymainwindow::keyPressEvent(QKeyEvent *event)

 {

    switch (event->key()) {

     case Qt::Key_Down:
         connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
         break;
     case Qt::Key_Up:
         connect(list,SIGNAL(currentRowChanged(int)),stack,SLOT(setCurrentIndex(int)));
         break;
      case Qt::Key_Left:
          stack->show(); // <---- Added

            break;
     case Qt::Key_Enter: // <---- Added
         stack->hide(); // <---- Added
         break;         // <---- Added

    }
 }

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

显示/隐藏“ _layout”中的项目

来自分类Dev

javascript隐藏/显示下拉列表中的项目

来自分类Dev

在Designer中的Qt 5中隐藏/显示DockWidgets

来自分类Dev

隐藏选定的项目并显示其他项目,而不是从jQuery项目列表中显示

来自分类Dev

是否可以在Flutter中的BottomNavigationBar中隐藏/显示项目?

来自分类Dev

ListView中的项目被隐藏,仅在onClick中显示

来自分类Dev

如何根据筛选条件隐藏或显示表格中的项目

来自分类Dev

隐藏和显示行阈值上方的表格列中的项目

来自分类Dev

根据触发器中的参数显示/隐藏项目

来自分类Dev

Qt-QStackedWidget的用法

来自分类Dev

显示和隐藏项目列表

来自分类Dev

显示/隐藏项目-列表视图

来自分类Dev

在tabBar中隐藏项目?

来自分类Dev

在React中隐藏项目

来自分类Dev

在tabBar中隐藏项目?

来自分类Dev

Qt在QTableView中隐藏列

来自分类Dev

Qt在QTableView中隐藏列

来自分类Dev

如何在QT中对小部件进行逻辑分组以方便显示/隐藏?

来自分类Dev

如何在Qt应用程序中同时隐藏/显示QLabel和QTextEdit?

来自分类Dev

如何显示/隐藏项目onclick jquery

来自分类Dev

根据用户操作显示/隐藏ListBox项目

来自分类Dev

显示隐藏的操作栏项目的图标

来自分类Dev

如何隐藏/显示特定的RecyclerView项目?

来自分类Dev

显示项目中的oracle表单隐藏字段

来自分类Dev

隐藏或显示带有Angular或Jquery的项目?

来自分类Dev

在显示/隐藏项目时保持站点位置

来自分类Dev

如何显示/隐藏 array.map() 的项目

来自分类Dev

在“设置”菜单中隐藏项目

来自分类Dev

AngularJS-基于ng-repeat中的项目数显示/隐藏