【问题标题】:How to make buttons in Place of Menubar in QT?QT中如何用按钮代替菜单栏?
【发布时间】:2022-12-14 02:20:15
【问题描述】:

代替文件下拉菜单栏,我想在菜单栏中直接使用我在图片中绘制的按钮。

这是我的主窗口.cpp班级:

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent),
      model(new DomModel(QDomDocument(), this)),
      view(new QTreeView(this))
{
    fileMenu = menuBar()->addMenu(tr("&File"));
    fileMenu->addAction(tr("&FIND"), this, &MainWindow::openFile, QKeySequence::Open);
    //fileMenu->addAction(tr("E&xit"), this, &QWidget::close, QKeySequence::Quit);
    //fileMenu = activeAction(tr("&FIND"), this, &MainWindow::openFile, QKeySequence::Open);

    view->setModel(model);

    setCentralWidget(view);
    setWindowTitle(tr("QTreeViewXML"));

}

打开文件() 函数:

void MainWindow::openFile()
{
QString filePath = QFileInfo("C:\\Users\\arpit.k\\Documents\\QT\\build-QTreeViewXML-Desktop_Qt_6_2_4_MinGW_64_bit-Debug\\Sample.xml").absoluteFilePath();

    if (!filePath.isEmpty()) {
        QFile file(filePath);
        if (file.open(QIODevice::ReadOnly)) {
            QDomDocument document;
            if (document.setContent(&file)) {
                DomModel *newModel = new DomModel(document, this);
                view->setModel(newModel);
                delete model;
                model = newModel;
                xmlPath = filePath;
            }
            file.close();
        }
    }
}

【问题讨论】:

  • 你可以使用 QToolBar
  • 虽然有指导方针,但一般来说,您可以将任何类型的小部件放在您想要的任何位置。没有规定必须以特定方式使用菜单或菜单栏。
  • 这就引出了一个问题,您是否尝试简单地不添加菜单栏并添加带有按钮的框布局,例如在主布局的顶部?
  • @AviralArpit 我的职责是帮助你。粗鲁不是寻求帮助的最佳方式。问题是,我怀疑你显示的代码不是你写的。换句话说,您要求人们为您编写代码(这违反了 StackOverflow 准则)。证据是你问如何删除菜单栏,但如果你没有首先添加它,菜单栏就不会在这里。打电话给 menuBar()->addMenu() 然后来这里抱怨是没有意义的,因为有一个菜单栏 :) 唯一有意义的方法是你转储的代码是否只是其他人代码的复制粘贴。
  • @AviralArpit 哦,你知道的法律比我多,很好 :) 在那种情况下,你不能忽视 Stack Overflow 不是免费的编码服务,来这里要求人们为你编写代码违反了这一点。无论如何,如果您所做的只是窃取其他人的代码,甚至没有您使用的语言(和框架)的基础知识,恐怕您迟早会碰壁。但是既然人们试图帮助你时你会很不愉快,那么自己修复代码怎么样? :) 祝你今天过得愉快

标签: c++ qt qt5


【解决方案1】:

我解决了这个:

QToolBar *fileToolBar = addToolBar(tr("FIND"));
const QIcon newIcon = QIcon::fromTheme("FIND", QIcon("image.jpg"));
QAction *newAct = new QAction(newIcon, tr("&FIND"), this);
newAct->setShortcuts(QKeySequence::Open);
connect(newAct, &QAction::triggered, this, &MainWindow::openFile);
fileToolBar->addAction(newAct);

为我工作!

【讨论】:

    猜你喜欢
    • 2021-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-25
    • 1970-01-01
    相关资源
    最近更新 更多