Qt中的常用插件

myWidget.cpp文件

#include "mywidget.h"
#include "ui_mywidget.h"

#include <QDebug>
#include <QDesktopServices>
#include <QUrl>
#include <QString>

myWidget::myWidget(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::myWidget)
{
    ui->setupUi(this);

    this->setFixedSize(320,480);//窗口大小固定,无法改变
    QPixmap icon(":/Sources/b_resume.png");//新建图片资源

    /*设置图标按钮*/
    QPushButton* myButton = new QPushButton(this);
    myButton->move(100,100);
    myButton->setIcon(icon);
    //myButton->setIcon(QPixmap(":/Sources/b_resume.png"));
    myButton->setFixedSize(icon.size());//设置按钮大小
    myButton->setIconSize(icon.size());//设置图标大小
    myButton->setFlat(true);//去掉边框
    connect(myButton, &QPushButton::pressed,
            [=]()
            {
                qDebug()<<"按钮被点击";
            }
        );

    /*label: 标签、显示静态文本、图片和网页url, 支持html格式*/
    QLabel* label3 = new QLabel(this);
    label3->move(200, 10);
    //显示静态文本
    label3->setText("<h1>label3</h1>");//h1~h6表示不同的网页字体
    QLabel* label = new QLabel(this);
    //显示网页url
    label->setText("<a href=www.baidu.com>baidu</a>");
    label->move(10,20);
    connect(label, &QLabel::linkActivated,
            [](QString str)
            {
                QDesktopServices::openUrl(QUrl(str));//调用服务打开浏览器
            }
            );
    //显示图片
    QLabel* label2 = new QLabel(this);
    label2->setText("<img src=:/Sources/cover_b1.png></img>");
    //lable2->setText(icon);
    label2->move(10,40);

    /*单行文本输入框*/
    QLineEdit* lineEdit = new QLineEdit(this);
    lineEdit->setEchoMode(QLineEdit::Password);//密码输入时变为圆点
    //lineEdit->setCompleter(参数不知道);//输入时自动匹配
    lineEdit->setPlaceholderText("请输入密码");//提示文本,淡灰色,用户输入时消失
    lineEdit->setClearButtonEnabled(true);//开启清除按钮
    lineEdit->setMaxLength(8);//设置文本最大长度
    connect(lineEdit,&QLineEdit::returnPressed,
            [=]()
            {
                qDebug()<<lineEdit->text();//按下回车时读取文本
            }
            );

    /*多行文本输入, 富文本:内容可以为图片*/
    textEdit = new QTextEdit(this);
    textEdit->move(10,200);
    textEdit->setMaximumHeight(40);
    connect(textEdit, &QTextEdit::textChanged, this, &myWidget::recvTextChange);//文本发生改变时发出信号

    /*平文本,不可输入图片*/
    //QPlainTextEdit* plainTextEdit = new QPlainTextEdit(this);

    /*单选框, 同组单选框互斥*/
    QRadioButton* b1 = new QRadioButton(this);
    b1->setText("吃1");
    b1->setChecked(true);//设置初始值
    b1->move(10,250);
    QRadioButton* b2 = new QRadioButton(this);
    b2->setText("吃2");
    b2->move(10,270);
    QRadioButton* b3 = new QRadioButton(this);
    b3->setText("吃3");
    b3->move(10,290);

    QRadioButton* b4 = new QRadioButton(this);
    b4->setText("喝1");
    b4->move(100,250);
    QRadioButton* b5= new QRadioButton(this);
    b5->setText("喝2");
    b5->move(100,270);
    QRadioButton* b6 = new QRadioButton(this);
    b6->setText("喝3");
    b6->move(100,290);

    //给RadioButton分组, b1~b3属于myWidget
    QButtonGroup* box = new QButtonGroup(this);
    box->addButton(b4);
    box->addButton(b5);
    box->addButton(b6);
    b4->setChecked(true);

    /*复选框*/
    QCheckBox* checkBox = new QCheckBox("吃饱了",this);
    checkBox->move(10,320);
    connect(checkBox,&QCheckBox::stateChanged,
            [=](int value)
                {
                    qDebug()<<checkBox->isChecked()<<value; //value==表示未选中,2表示选中,1表示不可选
                }
            );

    /*下拉选择框*/
    QComboBox* comboBox = new QComboBox(this);
    comboBox->move(100, 320);
    comboBox->addItem("吃鸡");
    comboBox->addItem("吃土");
    comboBox->addItem("吃素");
    comboBox->setCurrentIndex(1);//设置默认值,Index和Text是一一对应的
    connect(comboBox, &QComboBox::currentTextChanged,
            [=](QString str)
            {
                qDebug()<<str;//打印出选项字符串
            }
            );

    /*滑块*/
    QSlider* slider = new QSlider(this);
    slider->setOrientation(Qt::Horizontal);
    slider->move(10, 340);
    slider->setMinimum(1);
    slider->setMaximum(99);
    slider->setValue(50);//设置初始值

    /*拨码选择块*/
    QSpinBox* spinBox = new QSpinBox(this);
    spinBox->move(10+slider->size().width(), 340);//关联位置
    spinBox->setMinimum(1);
    spinBox->setMaximum(99);
    spinBox->setValue(50);

   /*Slider通常和SpinBox联合使用*/
   connect(slider, &QSlider::valueChanged, spinBox, &QSpinBox::setValue);
   void (QSpinBox::*pFunc)(int) = QSpinBox::valueChanged;
   connect(spinBox, pFunc, slider, &QSlider::setValue);//SpinBox的valueChanged有重载

   /*日期*/
   QDateEdit* dateEdit = new QDateEdit(QDate::currentDate(),this);//添加currentTime使dateEdit出现时显示当前日期
   dateEdit->move(10, 370);
   dateEdit->setCalendarPopup(true);//设置时间时打开日历

   /*时间*/
   QTimeEdit* timeEdit = new QTimeEdit(QTime::currentTime(),this);
   timeEdit->move(30+dateEdit->size().width(),370);
   //timeEdit->setCalendarPopup(true);//timeEdit无法打开日历,此句无效

   /*日期时间*/
   QDateTimeEdit* dateTimeEdit = new QDateTimeEdit(QDateTime::currentDateTime(), this);
   dateTimeEdit->move(10, 400);
   dateTimeEdit->setCalendarPopup(true);

   qDebug()<<dateEdit->date();
   qDebug()<<dateEdit->date().year()<<" "<<dateEdit->date().month()<<" "<<dateEdit->date().day();
   qDebug()<<timeEdit->time();
   qDebug()<<timeEdit->time().hour()<<" "<<timeEdit->time().minute()<<" "<<timeEdit->time().second();
   qDebug()<<dateTimeEdit->dateTime();
   qDebug()<<dateTimeEdit->date().year()<<" "<<dateTimeEdit->time().hour();

   /*设置数码管显示插件*/
   QLCDNumber* lcdNum = new QLCDNumber(this);
   lcdNum->display("2018");//LcdNumber只能作为输出显示东西
   lcdNum->setGeometry(10,425,100,50);

   /*设置窗口标题*/
   this->setWindowIcon(QPixmap(":/Sources/props_paint.png"));

   /*设置窗口背景*/
}

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

void myWidget::recvTextChange()
{
    QString str = textEdit->toPlainText();
    if(str.contains("aaa"))//当出现“aaa”,将其替换为一张图片
    {
        str.replace("aaa","<img src=:/Sources/star_blue.png></img>");
        textEdit->setText(str);
    }
}

void myWidget::paintEvent(QPaintEvent* p)//重载函数以设置背景图片;重绘窗口,自动调用
{
    QPainter painter(this);
    painter.drawPixmap(0,0,width(),height(),QPixmap(":/Sources/props_paint.png"));
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值