1. 程式人生 > >Qt中的常用外掛

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