【问题标题】:QDialog with floating toolbar带有浮动工具栏的 QDialog
【发布时间】:2012-10-17 04:37:29
【问题描述】:

如何在 Qt 中创建带有浮动工具栏的QDialog

QDialog 中以工具栏作为小部件的QMainWindow 附件不适合。

【问题讨论】:

    标签: qt toolbar qdialog


    【解决方案1】:

    为什么不适合?下面的代码就像魅力一样。

    #include <QtGui>
    
    class MyDialog : public QDialog
    {
        Q_OBJECT
    public:
        MyDialog(QWidget* parent=0)
        {
            QMainWindow* child = new QMainWindow;
            QLabel* label = new QLabel(tr("QMainWindow with toolbar!"));
            label->setAlignment(Qt::AlignCenter);
            child->setCentralWidget(label);
    
            QToolBar* toolbar = child->addToolBar(tr("Tool"));
            toolbar->addAction(tr("Test"), this, SLOT(doTest()));
    
            QHBoxLayout* layout = new QHBoxLayout(this);
            layout->setContentsMargins(0,0,0,0);
            layout->addWidget(child);
        }
    private slots:
        void doTest()
        {
            QMessageBox::information(this, tr("Test"), tr("ToolBar is Working!"));
        }
    };
    

    【讨论】:

    • QMainWindow 太重了。可能是我不是精确制定的问题。更正确的是:如何在 qt 中创建带有浮动工具栏的 Qwidget?如果我想在一个 Dialog 中为不同的小部件创建多个工具栏?
    • 仅浮动工具栏可以很容易地完成,因为它是 QWidget 派生的,我相信您可以随时将 QWidget 作为弹出窗口。但是如果你想让它停靠/浮动可切换,除了使用QMainWindow之外似乎没有其他选择。还有一件事情。 “QMainWindow 很重”是什么意思。 QMainWindow 运行缓慢吗?
    【解决方案2】:

    看看 Can you add a toolbar to QDialog? 并尝试像那样写smth

    myDialog->layout()->setMenuBar(myToolBar);
    

    【讨论】:

      猜你喜欢
      • 2015-05-02
      • 2016-11-25
      • 2012-11-23
      • 1970-01-01
      • 2015-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-02
      相关资源
      最近更新 更多