Qlabel设置文件方向向右

QLabel 设置文字方向向右

主要是想就是重新绘制文字,首相自定义类继承QLabel,然后在类里重新实现paintEvent(QPaintEvent *event)函数

头文件 .h

class My_label: public QLabel
{
    Q_OBJECT
public:
    explicit My_label(QWidget *parent = nullptr);
    ~My_label();
    void paintEvent(QPaintEvent * event);
    void setString(QString string);
    QString m_string;
};

源文件 .cpp

My_label::My_label(QWidget *parent) :
    QLabel(parent)
{

}
My_label::~My_label()
{

}
void My_label::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
      int x = this->width()-20;
      int y = ( this->height() -10);
       painter.rotate(90);
       painter.drawText(y-(y-10), -1, m_string);

}
void My_label::setString(QString string)
{
    m_string = string;
    update();
}

之后将这个两个文件添加到自己的工程里就可以使用了

### 如何在 Qt Creator 中设置 QWidget 组件的上下左右布局 #### 创建新项目 在Qt Creator中创建一个新的Qt Widgets应用程序,命名为`mylayout`,基类选择QWidget,类名设为MyWidget[^2]。 #### 添加组件并布置垂直布局 打开`mywidget.ui`文件进入设计模式。向界面添加多个控件,比如按钮QPushButton、标签QLabel或其他所需的小部件。为了展示垂直布局的效果,假设拖入三个QPushButton到窗口上。 #### 设置垂直布局 选中这三个按钮,右键菜单里找到“Lay out Vertically”选项来应用垂直布局;或者也可以通过顶部工具栏中的相应图标完成操作。此时这些选定的小部件将会按照从上至下的顺序排列,并自动调整大小以适应容器空间的变化[^1]。 对于水平布局的情况,则应选择"Lay out Horizontally"命令使所选对象横向分布于父级容器内。 #### 实现四周布局 (网格布局) 如果目标是让组件分布在四个方向即左、右、顶、底的位置,则应该考虑采用QGridLayout来进行更复杂的布局管理: ```cpp // C++代码片段用于初始化网格布局 #include "mywidget.h" #include <QVBoxLayout> #include <QHBoxLayout> #include <QGridLayout> MyWidget::MyWidget(QWidget *parent) : QWidget(parent), { QVBoxLayout* vBox = new QVBoxLayout(this); // 垂直盒子作为最外层 QHBoxLayout* hTopBar = new QHBoxLayout(); // 上方横条放置顶部元素 QPushButton* topLeftButton = new QPushButton("Left Top", this); QPushButton* topRightButton = new QPushButton("Right Top", this); hTopBar->addWidget(topLeftButton, 0, Qt::AlignLeft | Qt::AlignVCenter); hTopBar->addStretch(1); hTopBar->addWidget(topRightButton, 0, Qt::AlignRight | Qt::AlignVCenter); vBox->addLayout(hTopBar); QGridLayout* gridMainArea = new QGridLayout(); QLabel* leftSideLabel = new QLabel("Left Side Content", this); QTextEdit* mainTextEdit = new QTextEdit(this); QLabel* rightSideLabel = new QLabel("Right Side Content", this); gridMainArea->addWidget(leftSideLabel, 0, 0, 3, 1); // 左侧占三行一列 gridMainArea->addWidget(mainTextEdit, 0, 1, 3, 1); // 主区域占据中间位置 gridMainArea->addWidget(rightSideLabel, 0, 2, 3, 1); // 右边同样占用三行一列 vBox->addLayout(gridMainArea); } ``` 这段C++代码展示了如何组合使用不同的布局管理器(QVBoxLayout和QHBoxLayout以及QGridLayout),从而达到将不同类型的控件安排在一个更加复杂而有序的方式下显示出来。这不仅限定了各个部分之间的相对关系,还允许灵活控制它们的具体尺寸比例与间距等属性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值