QListWidget和QStackedWidget

来源:互联网 发布:山航待遇怎么样知乎 编辑:程序博客网 时间:2024/05/13 16:20

 QListWidget和QStackedWidget的简单使用,模仿QQ设置

set1

 

set2

 


layout1.pro

[cpp] view plaincopy
  1. SOURCES += layout1.cpp /  
  2.     main.cpp /  
  3.     widget1.cpp /  
  4.     widget2.cpp  
  5. HEADERS += layout1.h /  
  6.     widget1.h /  
  7.     widget2.h  


main.cpp

[c-sharp] view plaincopy
  1. #include <QtGui/QApplication>  
  2. #include "layout1.h"  
  3. int main(int argc, char *argv[])  
  4. {  
  5.     QApplication a(argc, argv);  
  6.     layout1 w;  
  7.     w.show();  
  8.     return a.exec();  
  9. }  


layout1.h

[c-sharp] view plaincopy
  1. #ifndef LAYOUT1_H  
  2. #define LAYOUT1_H  
  3. #include <QtGui/QDialog>  
  4. #include <QWidget>  
  5. #include <QListWidget>  
  6. #include <QStackedWidget>  
  7. #include <QHBoxLayout>  
  8. #include <QtGui/QApplication>  
  9. #include <QTextCodec>  
  10. #include <QPushButton>  
  11. #include "widget1.h"  
  12. #include "widget2.h"  
  13. class layout1 : public QWidget  
  14. {  
  15.      Q_OBJECT  
  16. public:  
  17.     layout1(QWidget *parent = 0);  
  18. public slots:  
  19.     void saveData();  
  20. private:  
  21.     QListWidget listWidget;  
  22.     QStackedWidget stackedWidget;  
  23.     QHBoxLayout hLayout;  
  24.     QHBoxLayout buttonLayout;  
  25.     QVBoxLayout rightLayout;  
  26.     QPushButton saveButton;  
  27.     QPushButton cancelButton;  
  28.     Widget1 widget1;  
  29.     Widget2 widget2;  
  30. };  
  31. #endif // LAYOUT1_H  


layout1.cpp

[c-sharp] view plaincopy
  1. #include "layout1.h"  
  2. #include <QSettings>  
  3. layout1::layout1(QWidget *parent):QWidget(parent)  
  4. {  
  5.     /*设置中文显示编码,否则为乱码*/  
  6.     QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "utf8"));  
  7.     /*设置窗口背景*/  
  8.     setStyleSheet(QString::fromUtf8("layout1{background-color: rgb(51, 204, 204);}"));  
  9.     /*读取信息*/  
  10.     QSettings data("data",QSettings::IniFormat);  
  11.     data.beginGroup("基本信息");  
  12.     widget1.nickNameEdit.setText(data.value("昵称").toString());  
  13.     widget1.accountEdit.setText(data.value("帐号").toString());  
  14.     widget1.mailEdit.setText(data.value("邮箱").toString());  
  15.     data.endGroup();  
  16.     data.beginGroup("详细信息");  
  17.     widget2.addressEdit.setText(data.value("地址").toString());  
  18.     widget2.jobEdit.setText(data.value("工作").toString());  
  19.     widget2.introductionEdit.setPlainText(data.value("介绍").toString());  
  20.     data.endGroup();  
  21.     /*连接信号*/  
  22.     connect(&listWidget,SIGNAL(currentRowChanged(int)),&stackedWidget,SLOT(setCurrentIndex(int)));  
  23.     connect(&saveButton,SIGNAL(pressed()),this,SLOT(saveData()));  
  24.     connect(&cancelButton,SIGNAL(pressed()),this,SLOT(close()));  
  25.     /*初始化按钮*/  
  26.     saveButton.setText("保存");  
  27.     cancelButton.setText("取消");  
  28.     buttonLayout.addWidget(&saveButton);  
  29.     buttonLayout.addWidget(&cancelButton);  
  30.     /*初始化各部件*/  
  31.     listWidget.addItem("基本资料");  
  32.     listWidget.addItem("详细资料");  
  33.     stackedWidget.addWidget(&widget1);  
  34.     stackedWidget.addWidget(&widget2);  
  35.     stackedWidget.setCurrentIndex(1);  
  36.     rightLayout.addWidget(&stackedWidget);  
  37.     rightLayout.addLayout(&buttonLayout);  
  38.     hLayout.addWidget(&listWidget,1);  
  39.     hLayout.addLayout(&rightLayout,3);  
  40.     setLayout(&hLayout);  
  41. }  
  42. void layout1::saveData()  
  43. {   /*保存信息*/  
  44.     QSettings data("data",QSettings::IniFormat);  
  45.     data.beginGroup("基本信息");  
  46.     data.setValue("昵称",widget1.nickNameEdit.text());  
  47.     data.setValue("帐号",widget1.accountEdit.text());  
  48.     data.setValue("邮箱",widget1.mailEdit.text());  
  49.     data.endGroup();  
  50.      data.beginGroup("详细信息");  
  51.     data.setValue("地址",widget2.addressEdit.text());  
  52.     data.setValue("工作",widget2.jobEdit.text());  
  53.     data.setValue("介绍",widget2.introductionEdit.toPlainText());  
  54.     data.endGroup();  
  55.     close();  
  56. }  


widget1.h

[c-sharp] view plaincopy
  1. #ifndef WIDGET1_H  
  2. #define WIDGET1_H  
  3. #include <QWidget>  
  4. #include <QLineEdit>  
  5. #include <QVBoxLayout>  
  6. #include <QHBoxLayout>  
  7. #include <QLabel>  
  8. #include <QTextCodec>  
  9. class Widget1 : public QWidget  
  10. {  
  11. public:  
  12.     Widget1();  
  13.     QLabel nickNameLabel;  
  14.     QLineEdit nickNameEdit;  
  15.     QLabel accountLabel;  
  16.     QLineEdit accountEdit;  
  17.     QLabel mailLabel;  
  18.     QLineEdit mailEdit;  
  19. private:  
  20.     QVBoxLayout nickNameLayout;  
  21.     QVBoxLayout accountLayout;  
  22.     QVBoxLayout mailLayout;  
  23.     QVBoxLayout vLayout;  
  24.     QHBoxLayout hLayout;  
  25. };  
  26. #endif // WIDGET1_H  


widget1.cpp

[cpp] view plaincopy
  1. #include "widget1.h"  
  2. Widget1::Widget1()  
  3. {  
  4.     /*设置中文显示编码,否则为乱码*/  
  5.     QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "utf8"));  
  6.      nickNameLabel.setText("昵称");  
  7.      //nickNameEdit.setText("");  
  8.      accountLabel.setText("帐号");  
  9.      //accountEdit;  
  10.      mailLabel.setText("邮箱");  
  11.     // mailEdit;  
  12.    // nickNameLayout.addStretch();  
  13.     nickNameLayout.addWidget(&nickNameLabel);  
  14.     nickNameLayout.addWidget(&nickNameEdit);  
  15.     nickNameLayout.addStretch();  
  16.     accountLayout.addWidget(&accountLabel);  
  17.     accountLayout.addWidget(&accountEdit);  
  18.     accountLayout.addStretch();  
  19.     mailLayout.addWidget(&mailLabel);  
  20.     mailLayout.addWidget(&mailEdit);  
  21.     mailLayout.addStretch();  
  22.       
  23.     hLayout.addLayout(&nickNameLayout);  
  24.     hLayout.addLayout(&accountLayout);  
  25.       
  26.     vLayout.addLayout(&hLayout,1);  
  27.     vLayout.addLayout(&mailLayout,1);  
  28.     vLayout.addStretch(5);  
  29.     setLayout(&vLayout);  
  30. }  


widget2.h

[cpp] view plaincopy
  1. #ifndef WIDGET2_H  
  2. #define WIDGET2_H  
  3. #include <QWidget>  
  4. #include <QLineEdit>  
  5. #include <QVBoxLayout>  
  6. #include <QHBoxLayout>  
  7. #include <QLabel>  
  8. #include <QTextCodec>  
  9. #include <QTextEdit>  
  10. class Widget2 : public QWidget  
  11. {  
  12. public:  
  13.     Widget2();  
  14.     QLabel addressLabel;  
  15.     QLineEdit addressEdit;  
  16.     QLabel jobLabel;  
  17.     QLineEdit jobEdit;  
  18.     QLabel introductionLabel;  
  19.     QTextEdit introductionEdit;  
  20. private:  
  21.     QVBoxLayout addressLayout;  
  22.     QVBoxLayout jobLayout;  
  23.     QVBoxLayout introductionLayout;  
  24.     QVBoxLayout vLayout;  
  25.     QHBoxLayout hLayout;  
  26. };  
  27. #endif // WIDGET2_H  


widget2.cpp

[cpp] view plaincopy
  1. #include "widget2.h"  
  2. Widget2::Widget2()  
  3. {  
  4.     /*设置中文显示编码,否则为乱码*/  
  5.     QTextCodec::setCodecForCStrings( QTextCodec::codecForName( "utf8"));  
  6.     addressLabel.setText("地址");  
  7.     jobLabel.setText("工作");  
  8.     introductionLabel.setText("介绍");  
  9.     addressLayout.addWidget(&addressLabel);  
  10.     addressLayout.addWidget(&addressEdit);  
  11.     addressLayout.addStretch();  
  12.     jobLayout.addWidget(&jobLabel);  
  13.     jobLayout.addWidget(&jobEdit);  
  14.     jobLayout.addStretch();  
  15.     introductionLayout.addWidget(&introductionLabel);  
  16.     introductionLayout.addWidget(&introductionEdit);  
  17.     introductionLayout.addStretch();  
  18.   
  19.     vLayout.addLayout(&addressLayout,1);  
  20.     vLayout.addLayout(&jobLayout,1);  
  21.     vLayout.addLayout(&introductionLayout,5);  
  22.     vLayout.addStretch(5);  
  23.     setLayout(&vLayout);  
  24. }  

 

原创粉丝点击