Qt5之擴展對話框與在QLabel中顯示中文的辦法

//mainwindow.h

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

#include<QDialog>
#include<QLabel>
#include<QLineEdit>
#include<QComboBox>
#include<QPushButton>
#include<QVBoxLayout>
#include<QGridLayout>
#include<QTextCodec>
class MainWindow : public QDialog
{
    Q_OBJECT

public:
    //QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));這種辦法不起作用,
     //在    QT5中
    MainWindow(QWidget *parent = 0);
    void creatBaseInfo();
    void creatDetialInfo();
private:
    QWidget *baseWidget;
    QWidget *detailWidget;
private slots:
    void slotExtendWidget();


    //~MainWindow();
};

#endif // MAINWINDOW_H

 

 

//mainwindow.cpp

#include "mainwindow.h"

#include<QTextCodec>
#include<QString>
MainWindow::MainWindow(QWidget *parent)
    : QDialog(parent)
{
    creatBaseInfo();
    creatDetialInfo();
    QVBoxLayout *vLayout=new QVBoxLayout;
    vLayout->addWidget(baseWidget);
    vLayout->addWidget(detailWidget);
    vLayout->setSpacing(10);

    vLayout->setSizeConstraint(QLayout::SetFixedSize);
    //這一條代碼很重要,當擴展對話框時避免佈局發生變化
    this->setLayout(vLayout);
}

//MainWindow::~MainWindow()
//{

//}

void MainWindow::creatBaseInfo()
{
    baseWidget=new QWidget;
    QLabel *nameLabel=new QLabel;
    QString s1 =QString::fromUtf8("姓名");//這是在qlabel中顯示中文的辦法
    nameLabel->setText(s1);

    QLineEdit *nameLineEdit=new QLineEdit;
    QPushButton *okPushButton=new QPushButton;
    QString s2=QString::fromUtf8("確認");
    okPushButton->setText(s2);

    QLabel *sexLabel=new QLabel;
    QString s3=QString::fromUtf8("性別");
    sexLabel->setText(s3);

    QComboBox *sexCombox=new QComboBox;
    QString s4=QString::fromUtf8("男x");
    //不知爲何”男“時,他就說後面有換行符
    QString s5=QString::fromUtf8("女x");
    sexCombox->insertItem(0,s4);
    sexCombox->insertItem(1,s5);

    QPushButton *detailPushButton=new QPushButton;
    QString s6=QString::fromUtf8("詳細");
    detailPushButton->setText(s6);

    QGridLayout *mainGridLayout=new QGridLayout;
    mainGridLayout->addWidget(nameLabel,0,0);
    mainGridLayout->addWidget(nameLineEdit,0,1);
    mainGridLayout->addWidget(okPushButton,0,2);
    mainGridLayout->addWidget(sexLabel,1,0);
    mainGridLayout->addWidget(sexCombox,1,1);
    mainGridLayout->addWidget(detailPushButton,1,2);
    mainGridLayout->setMargin(10);
    mainGridLayout->setSpacing(10);

    baseWidget->setLayout(mainGridLayout);



    connect(detailPushButton,SIGNAL(clicked()),this,SLOT(slotExtendWidget()));

}

void MainWindow::creatDetialInfo()
{
    detailWidget=new QWidget;
    QLabel *ageLabel=new QLabel;
    QString s1=QString::fromUtf8("年齡");
    ageLabel->setText(s1);

    QLineEdit *ageLineEdit=new QLineEdit;
    ageLineEdit->setText("18");

    QGridLayout *mainGrid=new QGridLayout;
    mainGrid->addWidget(ageLabel,0,0);
    mainGrid->addWidget(ageLineEdit,0,1);

    detailWidget->setLayout(mainGrid);
    detailWidget->hide();


}

void MainWindow::slotExtendWidget()
{
    if(detailWidget->isHidden())
        detailWidget->show();
    else
        detailWidget->hide();
}

 

//main.cpp

#include "mainwindow.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    MainWindow w;
    w.show();

    return a.exec();
}

 

 

 

發佈了35 篇原創文章 · 獲贊 5 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章