Qt布局、文件会话框操作

版权声明:本文为博主原创文章,未经博主允许不得转载。 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));
    }

}

猜你喜欢

转载自blog.csdn.net/fei86155/article/details/77592322