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"));
}