qt5 二 界面设计: 控件和信号槽

1 .  label 等widget 字体颜色设计   : 属性列表->stylesheet(样式表)  可以设置 字体大小 颜色 背景颜色  被选中的颜色(这个好像不可以) 获取label 内容 lbl->text();   设置label文字水平居中  属性-》alignment->点开->水平的->选择center

label 灰色提示文字的设置:inputMethodHints ->imhHindtext

2.  布局 可以通过qt creator 上面窗口选择 直接点击布局。

3. sizePolicy 尺寸策略 决定了在布局后 拉伸效果。 注意:加入布局后 控件自身的尺寸不再由自己决定,而由布局(如垂直布局)决定。

4.信号槽的建立: 

方法1: connect函数   例如  

                             谁(产生者),   发出了什么信号 (信号)    谁 (接收者)  执行什么操作(槽函数) 

 connect(this->ui->actionAbout,SIGNAL(triggered(bool)),t_aboutDialog,SLOT(show()));

方法2:

//建立信号槽关系的表示方法,按一定格式写槽函数就可以  例如函数  on_bt_FactoryTest_clicked

   选中控件-》右击->转到槽函数,自动生产相应的槽函数。on_bt_FactoryTest_clicked

对于菜单项action , 无法直接右击action -》转到槽函数的方式 自动生成槽函数。但是可以在界面下方,类似下图

选中actionAbout ->右击->转到槽函数。

 

 

方法3:  普通控件比如QpusButton  在ui 界面下方也可以 通过 如下图所示 建立信号槽的关系。但是此种方法有一个局限

就是 槽函数必须是系统预定义的槽函数,而不能是自己定义的。

5. 对mainwindow 设置最小化按钮和关闭按钮 以及禁止窗口拉伸

6. tabwidget 实现选项卡 分页效果 窗口切换

tabWidget 的实现默认选项卡时显示在上方的,且当修改成显示在左侧的时候字体是竖着的。 如下图

具体修改: 1.   属性-> tabPosition  修改成 West 

                    2.  添加自定义的文字style ,tabwidget.cpp下添加如下代码:

版权声明:本文为CSDN博主「skyztttt」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/skyztttt/article/details/52448992 

此处为转载

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

#include <QPainter>
#include <QProxyStyle>

class CustomTabStyle : public QProxyStyle
{
public:
    QSize sizeFromContents(ContentsType type, const QStyleOption *option,
        const QSize &size, const QWidget *widget) const
    {
        QSize s = QProxyStyle::sizeFromContents(type, option, size, widget);
        if (type == QStyle::CT_TabBarTab) {
            s.transpose();
            s.rwidth() = 90; // 设置每个tabBar中item的大小
            s.rheight() = 44;
        }
        return s;
    }

    void drawControl(ControlElement element, const QStyleOption *option, QPainter *painter, const QWidget *widget) const
    {
        if (element == CE_TabBarTabLabel) {
            if (const QStyleOptionTab *tab = qstyleoption_cast<const QStyleOptionTab *>(option)) {
                QRect allRect = tab->rect;

                if (tab->state & QStyle::State_Selected) {
                    painter->save();
                    painter->setPen(0x89cfff);
                    painter->setBrush(QBrush(0x89cfff));
                    painter->drawRect(allRect.adjusted(6, 6, -6, -6));
                    painter->restore();
                }
                QTextOption option;
                option.setAlignment(Qt::AlignCenter);
                if (tab->state & QStyle::State_Selected) {
                    painter->setPen(0xf8fcff);
                }
                else {
                    painter->setPen(0x5d5d5d);
                }

                painter->drawText(allRect, tab->text, option);
                return;
            }
        }

        if (element == CE_TabBarTab) {
            QProxyStyle::drawControl(element, option, painter, widget);
        }
    }
};

----------------------------应用 设置 style -----------------------------------------------------
widget_test::widget_test(QWidget *parent) :  QWidget(parent), ui(new Ui::widget_test) 
 { 
    ui->setupUi(this);  
    ui->tabWidget->tabBar()->setStyle(new CustomTabStyle);
}

7. stackwidget 实现窗口切换

stackWidget 的切换必须结合button 实现,通过button 建立信号槽 ,通过按键来实现切换。

槽函数例子:下面代码即可显示出来相应界面

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值