Qt 学习笔记1

1:Qt文件的结构:
当用Qtcreater创建完一个文件后会得到三个文件分别是:
在这里插入图片描述
当用纯代码写界面的时候,dialog.h是用来预设一些界面的控件,和函数。

private:
    //事先预设一些控件
    QCheckBox *checkBoxUnderline;
    QCheckBox *checkBoxItalic;
    QCheckBox *checkBold;

    QRadioButton *rBtnBlck;
    QRadioButton *rBtnBlue;
    QRadioButton *rBtnRed;

    QPlainTextEdit *plainTetEdit;

    QPushButton *btnok;
    QPushButton *btncancel;
    QPushButton *btnclose;

    void iniUI();
    void iniSignalSlot();
//预设一些信号的槽
private slots:
    void on_checkUnderline(bool checked);
    void on_checkItalic(bool checked);
    void on_checkBold(bool checked);
    void on_changeBlack();

当然也需要在头部文件加入一些引用文件

#include <QDialog>
#include<QRadioButton>
#include<QPushButton>
#include<QPlainTextEdit>
#include<QCheckBox>

参考关于private 和 public 两种类的区别:https://www.cnblogs.com/tsingke/p/10052445.html;
dialog.cpp是对界面的一个具体编辑和操作;

void Dialog::iniUI()
{
    ui->setupUi(this);
    this->resize(100,50);
    this->setWindowTitle("Fuck You");
    //比如checkBoxUnderline等,控件的名字是之前在dialog.h里面做过预设的。
    checkBoxUnderline = new QCheckBox(tr("underline"));
    checkBoxItalic = new QCheckBox(tr("Italic"));
    checkBold = new QCheckBox(tr("Bold"));
   
    //*设置一个横向的布局HLayout1*。
    QHBoxLayout *HLayout1 = new QHBoxLayout;
	//把这些控件加入到Widget.
    HLayout1 ->addWidget(checkBoxUnderline);
    HLayout1 ->addWidget(checkBoxItalic);
    HLayout1 ->addWidget(checkBold);

    rBtnBlck = new QRadioButton(tr("Black"));
    rBtnBlue = new QRadioButton(tr("Blue"));
    rBtnRed = new QRadioButton(tr("Red"));
    QHBoxLayout *HLayout2 = new QHBoxLayout;

    HLayout2 ->addWidget(rBtnBlck);
    HLayout2 ->addWidget(rBtnBlue);
    HLayout2 ->addWidget(rBtnRed);


    plainTetEdit = new QPlainTextEdit();
    QFont font = plainTetEdit->font();
    font.setPointSize(20);
    plainTetEdit->setFont(font);

    plainTetEdit->setPlainText("hello world\n\nThis is new world!");


    btnok = new QPushButton(tr("OK"));
    btncancel = new QPushButton(tr("Cancel"));
    btnclose = new QPushButton(tr("Close"));
    QHBoxLayout *HLayout3 = new QHBoxLayout;
  	//加入一个弹簧的控件。
    HLayout3->addStretch();
    HLayout3 ->addWidget(btnok);
    HLayout3->addStretch();
    HLayout3 ->addWidget(btncancel);
    HLayout3->addStretch();
    HLayout3 ->addWidget(btnclose);
    HLayout3->addStretch();
	//设置一个控件的纵向的布局VLayout。
    QVBoxLayout *VLayout = new QVBoxLayout;
    //把布局的HLayout1等布局加入到VLayout。
    VLayout->addLayout(HLayout1);
    VLayout->addLayout(HLayout2);
    VLayout->addWidget(plainTetEdit);
    VLayout->addLayout(HLayout3);
    setLayout(VLayout);
}

现在有了一些控件,下面就是需要对控件加一些信号和槽来让控件被点击或者操作后会有一定的反应。

//为了以后方便调用我们需要创建一个信号和槽的一个函数,这个函数iniSignalSlot()是之前在dialog.h中创建过的。
void Dialog::iniSignalSlot()
{
    connect(btnok,SIGNAL(clicked()),this,SLOT(accept()));
    connect(btncancel,SIGNAL(clicked()),this,SLOT(reject()));
    connect(btnclose,SIGNAL(clicked()),this,SLOT(close()));
	//这个里面的QCheckBox需要一个状态的bool值,这里需要特别的注意下。
    connect(checkBoxUnderline,SIGNAL(clicked(bool)),this,SLOT(on_checkUnderline(bool)));
    connect(checkBoxItalic,SIGNAL(clicked(bool)),this,SLOT(on_checkItalic(bool)));
    connect(checkBold,SIGNAL(clicked(bool)),this,SLOT(on_checkBold(bool)));

    connect(rBtnBlck,SIGNAL(clicked()),this,SLOT(on_changeBlack()));
    connect(rBtnBlue,SIGNAL(clicked()),this,SLOT(on_changeBlack()));
    connect(rBtnRed,SIGNAL(clicked()),this,SLOT(on_changeBlack()));

}

剩下的就是关于一些信号的函数的处理了。

void Dialog::on_checkUnderline(bool checked)
{
    QFont font = plainTetEdit->font();
    font.setUnderline(checked);
    plainTetEdit->setFont(font);
}

void Dialog::on_checkItalic(bool checked)
{
    QFont font = plainTetEdit->font();
    font.setItalic(checked);
    plainTetEdit->setFont(font);
}

void Dialog::on_checkBold(bool checked)
{
    QFont font = plainTetEdit->font();
    font.setBold(checked);
    plainTetEdit->setFont(font);
}

void Dialog::on_changeBlack()
{
  QPalette plate = plainTetEdit->palette();
  if(rBtnBlck->isChecked())
      plate.setColor(QPalette::Text,Qt::black);
  else if(rBtnBlue->isChecked())
      plate.setColor(QPalette::Text,Qt::blue);
  else if(rBtnRed->isChecked())
      plate.setColor(QPalette::Text,Qt::red);
  else
    plate.setColor(QPalette::Text,Qt::black);
  plainTetEdit->setPalette(plate);

}

之后运行编译一下就会有下面的结果。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值