设置失败了,我希望这个工具栏是竖版的、独立于主窗口的
时间: 2024-04-14 08:25:28 浏览: 209
如果你希望创建一个竖直方向的、独立于主窗口的工具栏,可以使用QToolBar类的setOrientation()函数来设置工具栏的方向为垂直方向,然后使用QMainWindow类的addToolBar()函数将工具栏添加到主窗口之外。
以下是修改后的示例代码:
```cpp
// mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
#include <QToolBar>
#include <QComboBox>
#include <QAction>
#include <QColorDialog>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr);
~MainWindow();
private slots:
void onPenColorChanged();
void onBrushColorChanged();
private:
QToolBar *toolBar;
QComboBox *penColorComboBox;
QComboBox *brushColorComboBox;
QAction *penColorAction;
QAction *brushColorAction;
};
#endif // MAINWINDOW_H
// mainwindow.cpp
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
{
// 创建绘图工具栏
toolBar = new QToolBar(this);
toolBar->setOrientation(Qt::Vertical); // 设置工具栏方向为垂直方向
// 创建画笔颜色选择框
penColorComboBox = new QComboBox(this);
penColorComboBox->addItem("Black", QColor(Qt::black));
penColorComboBox->addItem("Red", QColor(Qt::red));
penColorComboBox->addItem("Green", QColor(Qt::green));
penColorComboBox->addItem("Blue", QColor(Qt::blue));
connect(penColorComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onPenColorChanged()));
// 创建画刷颜色选择框
brushColorComboBox = new QComboBox(this);
brushColorComboBox->addItem("No brush", QColor(Qt::transparent));
brushColorComboBox->addItem("Yellow", QColor(Qt::yellow));
brushColorComboBox->addItem("Cyan", QColor(Qt::cyan));
brushColorComboBox->addItem("Magenta", QColor(Qt::magenta));
connect(brushColorComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(onBrushColorChanged()));
// 创建动作
penColorAction = toolBar->addWidget(penColorComboBox);
brushColorAction = toolBar->addWidget(brushColorComboBox);
// 将工具栏添加到主窗口之外
addToolBar(Qt::LeftToolBarArea, toolBar);
toolBar->setFloatable(true); // 设置工具栏可浮动
toolBar->setMovable(true); // 设置工具栏可移动
}
MainWindow::~MainWindow()
{
}
void MainWindow::onPenColorChanged()
{
QComboBox *comboBox = qobject_cast<QComboBox*>(sender());
if (comboBox)
{
QColor color = comboBox->currentData().value<QColor>();
// 更新画笔颜色
// ...
}
}
void MainWindow::onBrushColorChanged()
{
QComboBox *comboBox = qobject_cast<QComboBox*>(sender());
if (comboBox)
{
QColor color = comboBox->currentData().value<QColor>();
// 更新画刷颜色
// ...
}
}
```
这样,你就可以创建一个竖直方向的、独立于主窗口的工具栏,并且工具栏是可浮动和可移动的。你可以根据需要进行进一步的定制和调整。
阅读全文