版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fei86155/article/details/77592322
#include "widget.h"
#include <QTabWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QLabel>
#include <QRadioButton>
#include <QDebug>
#include <QPushButton>
#include <QTextStream> //iostream
#include <QTextEdit>
#include <QSlider>
#include <QSpinBox>
#include <QComboBox>
#include <QFile>
#include <QFileDialog>
#include <QMessageBox>
#include <QFileInfo>
namespace name {
}
Widget::Widget(QWidget *parent)
: QWidget(parent)
{
//布局
QVBoxLayout * vLayout = new QVBoxLayout;
QHBoxLayout * hLayout = new QHBoxLayout;
//标签
QLabel * label = new QLabel;
//label->setText("Hello");
label->setText("<a href = www.baidu.com>baidu</a>");
vLayout ->addWidget(label);
//文本编辑框
textEdit = new QTextEdit;
vLayout ->addWidget(textEdit);
//单选框
QRadioButton * radioButton = new QRadioButton;
QRadioButton * radioButton2 = new QRadioButton;
radioButton ->setText("好");
radioButton2 ->setText("坏");
hLayout ->addWidget(radioButton);
hLayout ->addWidget(radioButton2);
vLayout ->addLayout(hLayout);
//选项卡
QTabWidget * tabWidget = new QTabWidget;
QPushButton * btn1 = new QPushButton;
tabWidget ->addTab(btn1,QIcon(":/new/prefix1/11.jpg"),"First");
QPushButton * btn2 = new QPushButton;
tabWidget ->addTab(btn2,QIcon(":/new/prefix1/22.jpg"),"Second");
// hLayout ->addWidget(tabWidget);
tabWidget ->setTabsClosable(true); //显示关闭按钮
vLayout ->addWidget(tabWidget);
//qDebug()输出
qDebug().nospace()<<"hao"<< "nihao"; //空格不显示
//slider
QSlider * slider = new QSlider(Qt::Horizontal);
// slider ->setMaximum(100);
// slider ->setMinimum(0);
slider ->setRange(0,1000);
// slider ->setStyle(QSlider::Macintosh);
vLayout ->addWidget(slider);
//spinBox
QSpinBox * spinBox = new QSpinBox;
spinBox ->setRange(0,1000);
vLayout ->addWidget(spinBox);
//字符串QString
QString str;
str = QString("在线人数:%1 %2").arg("aa").arg("bb");
qDebug()<<str;
//Qcombobox
QComboBox * comboBox = new QComboBox;
comboBox ->addItems(QStringList()<<"语文"<<"s");
vLayout ->addWidget(comboBox);
//文件资源管理器
QPushButton * btn_file = new QPushButton("文件");
vLayout ->addWidget(btn_file);
//信号和槽(lambda)
//label
// connect(label,&QLabel::linkActivated,this,[](QString str){
// qDebug()<<str;
// QWidget * netWidget = new QWidget();
// netWidget ->setWindowTitle("百度");
// QLabel * label = new QLabel;
// label ->setPixmap(QPixmap(":/new/prefix1/百度.PNG"));
// netWidget ->show();
// });
connect(label,SIGNAL(linkActivated(QString)),this,SLOT(showLabel()));
//textedit
// connect(textEdit,&QTextEdit::textChanged,this,[](QString str){
// if(str.contains("/ku"))
// str.replace("/ku","A");
// });
connect(textEdit,SIGNAL(textChanged()),this,SLOT(showText())); //文本哭转换
//spinbox-slider
connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));
//qtabbox
connect(tabWidget,SIGNAL(tabBarDoubleClicked(int)),this,SLOT(dotabclose(int)));
connect(tabWidget,SIGNAL(tabCloseRequested(int)),this,SLOT(dotabclose(int)));
//文件
connect(btn_file,SIGNAL(clicked(bool)),this,SLOT(fileOperate()));
//显示窗口
this->setLayout(vLayout);
}
Widget::~Widget()
{
}
void Widget::showText()
{
QTextEdit * edit = (QTextEdit *)sender();
QString text = edit->toPlainText();
if(text.contains("/ku"))
{
text.replace("/ku","A");
edit->setText(text);
}
}
void Widget::showLabel()
{
}
void Widget::dotabclose(int i)
{
QTabWidget * tab = (QTabWidget *)sender();
tab->removeTab(i); //移除标签
}
void Widget::fileOperate()
{
//文件打开
QString openPath = QFileDialog::getOpenFileName(this,"open",".","*.txt");
QTextStream in;
QString temp;
QFile openFile(openPath);
if(openFile.open(QIODevice::ReadOnly|QIODevice::Text))
{
QByteArray ba = openFile.readAll();
textEdit->setText(QString(ba));
}
openFile.close();
//文件保存
QString savePath = QFileDialog::getSaveFileName(this,"save",".","*.txt;;*.doc");
QFileInfo file_info(savePath); //获取文件名
QString file_Name = file_info.fileName();
QFile file(savePath);
if(file.open(QIODevice::WriteOnly|QIODevice::Text))
{
QTextStream out(&file);
out<<QString("HelloWorld");
file.close();
}
else
{
QMessageBox::warning(this,"Warning",QString("%1 save fail").arg(file_Name));
}
}