首页 > 其他分享 >Qt按钮字体旋转

Qt按钮字体旋转

时间:2024-02-02 14:44:06浏览次数:29  
标签:Qt drawText pBtn ui str 按钮 字体 MainWindow painter

#include "mainwindow.h"
#include "ui_mainwindow.h"

class RotatedButton : public QPushButton
{
public:
    explicit RotatedButton(const QString &text, QWidget *parent = nullptr)
        : QPushButton(text, parent)
    {
    }
    bool state = false;
    bool Spec = true;

protected:
    void paintEvent(QPaintEvent *event) override
    {
        QPushButton::paintEvent(event);
        QString str = "测试";//text();
        int len = str.length();
        this->setText("");
        QPainter painter(this);
        painter.setRenderHint(QPainter::Antialiasing);
        // 将坐标原点移到按钮中心
        //painter.translate(rect().center());
        painter.translate(QPointF(20,20));
        // 将字符串旋转90度
        if(state)
        {
            painter.rotate(-90);
            painter.drawText(0, 10, str.at(0));
            painter.drawText(0, 40, str.at(1));
        }
        else
        {
            painter.rotate(0);
            painter.drawText(10, 20, str.at(0));
            painter.drawText(40, 20, str.at(1));
        }
        // 绘制按钮中的字符串

    }
};
RotatedButton *pBtn ;
MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    QVBoxLayout layout(ui->centralwidget);

    pBtn = new RotatedButton("测试",ui->centralwidget);
    pBtn->setFixedSize(100,50);
    layout.addWidget(pBtn);


}

MainWindow::~MainWindow()
{
    delete ui;
}


void MainWindow::on_pushButton_clicked()
{
    pBtn->state = !pBtn->state;
    pBtn->repaint();
}

 

标签:Qt,drawText,pBtn,ui,str,按钮,字体,MainWindow,painter
From: https://www.cnblogs.com/dlutccj/p/18003145

相关文章

  • Qt 调试器常见异常
    1.变量无提示信息,解决办法:工具->选项->调试器->概要->选中《当调试时在主编辑器中启用工具提示》2.CDB断点调试,解决无法查看QString值。运行至断点时,程序卡死。解决办法:打开“工具->选项->调试器->CDB”,把“UsePythondumper”选项勾选去掉,保存即可。3.CDB调试速度慢,解决办法如......
  • Qt Access violation - code c0000005 debug write access violation
    WhentryingtodebugmyQtapplication,theappthrowaexceptionas"Exceptionat0x77da2073,code:0xc0000005:writeaccessviolationat:0x1,flags=0x0"IamusingQtcreatorandvs2005compileranddebugger. Iloadtheprojectonvs2005a......
  • PyQt5+python AttributeError: 'QMainWindow' object has no attribute 'slot1'解决办
    Step1.原因分析因为以前写过pyqt5,所以还是有一定的基础的,但是最近重新写上位机的时候,突然发现以前的办法不好用了,以前就是直接从Qtdesigner创建完成后,使用指令生成一个py文件,从main文件中调用就可以了,这次发现,直接使用槽函数,会报错AttributeError:'QMainWindow'objec......
  • jquery使按钮置灰不可用
    看到有网友寻找解决按钮不可用的方法,这里简单写一下。html代码如下<buttonid="myButton">按钮</button>css代码如下#myButton{background:#acacac;border:1pxsolid#898989;}jquery代码如下$("#myButton").attr("disabled","true");或者$("#myButton&qu......
  • OPC/MQTT工业通信软件OPLink
    OPLink是上海泗博自主研发的基于OPC数据采集及转发,OPC数据到MQTT通信的产品。它是基于上海泗博多年的OPC应用经验和工业通信产品的开发背景,推出的OPC/MQTT工业通信软件。软件设计简洁、实用、稳定。同时,OPLink还具备与KepwareLinkMaster相似的数据转发功能,可实现PLC设备间的自主......
  • 关于Qt MySQL有QMYSQL驱动,但是Driver not loaded问题。
    首先,说一下我当时的问题,控制台显示有QMYSQL驱动,但是就是检测不到报错没有驱动,数据库连接不成功。 一开始是一直在复制粘贴.dll和.lib,但是还是不行,一直试一直拖好久都没解决这个问题。因为我sqlite可以用,所以也不着急搞MySQL,但是每次一有时间,看到MySQL不能使就不舒服,就像再调......
  • WPF创建一个类似聊天框的MQTT报文收发界面
    界面的xaml代码如下<ListViewx:Name="LvmqttMsg"Background="Transparent"ItemsSource="{BindingMqttMsgItems}"ScrollViewer.CanContentScroll="False"><ListView.ItemContainerStyle><......
  • 网站弹出促销海报动画效果代码(带关闭按钮)
    在促销海报刚弹出时会抖动一两下<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>金币促销活动<......
  • 使用Latex输入日语,设置日语字体,并且添加假名
     \documentclass[12pt]{article}%\usepackage{ctex}\usepackage{xltxtra}%必须带上,否则下面的\setmainfont无法使用%\setmainfont{KozukaGothicProM}%\setmainfont[Mapping=tex-text]{KozukaGothicProM}\setmainfont{UDDigiKyokashoN-R}%\setmainfont{UDDigi......
  • 无边框 自定义页面 圆角 自定义关闭按钮 wfp 钱包夹
    无边框自定义页面圆角 自定义关闭按钮wfp钱包夹C#.net4.8wpfSqlServer2012消息队列Redis 来源银柱网-李银柱个人博客http://www.liyinzhu.com......