Notas de estudo da aula QFrame

1. O papel do QFrame

       A classe QFrame herda da classe QWidget e é herdada por QAbstractScrollArea, QLabel, QLCDNumber, QSplitter, QStackedWidget e QToolBox. Como classe base de muitos controles básicos, QFrame fornece muitos métodos membros para subclasses para implementar o design do estilo de quadro da subclasse. Os estilos de quadro consistem principalmente no formato do quadro e em um estilo de sombra usado para separar visualmente o quadro dos widgets adjacentes. Agora mesmo

  1. QFrame fornece funções de membro para projetar estilos de quadro para subclasses para ajudar as subclasses a projetar estilos exclusivos: bordas elevadas, bordas rebaixadas, conteúdo elevado ou conteúdo rebaixado, etc.
  2. QFrame também pode ser usado diretamente para criar quadros de espaço reservado simples que não contêm conteúdo.

2. Documento de tipo de membro QFrame

     2.1 enumeração QFrame::Shadow   

         Este tipo de enumeração define o tipo de sombra usado para fornecer um efeito 3D aos quadros.

QFrame::Plain 0x0010 As bordas ou o conteúdo parecem ser tão altos quanto os controles ao redor
QFrame::Elevado 0x0020 As bordas ou o conteúdo parecem elevados em comparação com os controles ao redor
QFrame::Afundado 0x0030 As bordas ou o conteúdo parecem afundados em comparação com os controles ao redor

     2.2 enumeração QFrame::Shape

                Este tipo de enum define a forma dos quadros disponíveis.

QFrame::NoFrame Não desenhe nada
QFrame::Caixa 0x0001 Desenhe uma borda para envolver o conteúdo e destacar o efeito de sombra da borda
QFrame::Painel 0x0002 Desenhe um plano de conteúdo para destacar o efeito de sombra do conteúdo
QFrame::StyledPanel 0x0006 Desenha um painel retangular cuja aparência depende do estilo atual da GUI. Pode ser elevado ou afundado.
QFrame::HLine 0x0004 Desenhe uma linha horizontal para separar e destacar o efeito de sombra da linha
QFrame::VLine 0x0005 Desenhe uma linha vertical para separar e destacar o efeito de sombra da linha
QFrame::WinPanel 0x0003 Desenha um painel retangular que pode ser movido para cima ou para baixo como no Windows 2000. Especificar esta forma define a largura da linha para 2 pixels. WinPanel é fornecido para compatibilidade.

 Para independência de estilo da GUI, recomendamos o uso do StyledPanel.

   2.3 enumeração QFrame::StyleMask

          Esta enumeração define duas constantes que podem ser usadas para extrair os dois componentes de frameStyle().

QFrame::Shadow_Mask 0x00f0 A parte sombreada do valor de retorno framStyle() do controle
QFrame::Shape_Mask 0x000f A parte da forma do valor de retorno framStyle() do controle

   2.4 Combinações de estilos que podem ser obtidas usando QFrame

3. Funções de membro comumente usadas do QFrame

     3.1 Introdução aos protótipos de funções-membro

 

protótipo de função de membro  descrever
QFrame(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()) Construtor
virtual ~QFrame()      destruidor
 QRect frameRect() const        Obtenha o tamanho do quadro do QFrame
vazio setFrameRect(const QRect &) Defina o tamanho do quadro do QFrame
QFrame::Shadow frameShadow() const Obtenha o estilo de sombra,
void setFrameShadow(QFrame::Shadow) Definir estilo de sombra,
QFrame::Shape frameShape() const Obtenha o formato da moldura
void setFrameShape(QFrame::Shape) Defina o formato da moldura
int frameStyle() const Obtenha a forma e o estilo de sombra da moldura
void setFrameStyle(estilo interno) Defina a forma e o estilo de sombra da moldura
int larguraLinha() const Obtenha a largura da linha do quadro
 void setLineWidth(int) Defina a largura das linhas do quadro
int midLineWidth() const Obtenha a largura da linha central do quadro
void setMidLineWidth(int) Defina a largura da linha central do quadro

   3.2 Exemplo simples

       Use QLabel, uma subclasse de QFrame, para completar o design de uma interface de login simples. Ao alterar o estilo do quadro QLabel, ele fica mais consistente com o estilo de QLineEdit, QPushButton e outros controles.

 

//.h文件
 
class Widget : public QWidget
{
    Q_OBJECT
 
public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
private:
 
    QLabel *useLabel;
    QLabel *pwLabel;
    QLabel *useEdit;
    QLabel *pwEdit;
    QLabel *checkBtn;
    QLabel *cancelBtn;
 
};
 
//.c文件
 
Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    this->resize(400,550);
    useLabel = new QLabel(this);
    useLabel->setText("用户名:");
    useLabel->move(70,150);
    useLabel->resize(50,30);
    //设置"用户名"标签的框架样式为 无边框+无阴影
    useLabel->setFrameShape(QFrame::NoFrame);
    useLabel->setFrameShadow(QFrame::Plain);
 
    useEdit = new QLabel(this);
    useEdit->move(150,150);
    useEdit->resize(200,30);
    //设置"用户名"输入框的框架样式为 边框+突起
    useEdit->setFrameStyle(QFrame::Box|QFrame::Raised);
    useEdit->setLineWidth(2);
 
 
    pwLabel = new QLabel(this);
    pwLabel->setText("密码:");
    pwLabel->move(70,210);
    pwLabel->resize(50,30);
    //设置"密码"标签的框架样式为 无边框+无阴影
    pwLabel->setFrameStyle(QFrame::NoFrame|QFrame::Plain);
 
    pwEdit = new QLabel(this);
    pwEdit->move(150,210);
    pwEdit->resize(200,30);
    //设置"用户名"输入框的框架样式为 内容+凹陷
    pwEdit->setFrameStyle(QFrame::Panel|QFrame::Sunken);
    pwEdit->setLineWidth(2);
 
    checkBtn = new QLabel(this);
    checkBtn->setText("确认");
    checkBtn->setAlignment(Qt::AlignCenter);
    checkBtn->move(100,290);
    checkBtn->resize(80,30);
    //设置"确认"按钮的框架样式为 内容+突起
    checkBtn->setFrameStyle(QFrame::Panel|QFrame::Raised);
    checkBtn->setLineWidth(3);
 
 
    cancelBtn = new QLabel(this);
    cancelBtn->setText("取消");
    cancelBtn->setAlignment(Qt::AlignCenter);
    cancelBtn->move(240,290);
    cancelBtn->resize(80,30);
    //设置"取消"按钮的框架样式为 内容+突起
    cancelBtn->setFrameStyle(QFrame::Panel|QFrame::Raised);
    cancelBtn->setLineWidth(3);
 
}
 
 
 

Renderização:

Acho que você gosta

Origin blog.csdn.net/weiweiqiao/article/details/133325675
Recomendado
Clasificación