歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 【Qt】UserInfo

【Qt】UserInfo

日期:2017/3/1 12:05:44   编辑:關於Linux

這是一個靜態的關於用戶信息的界面,首先看一下效果:

\

接下來是看代碼:

//dialog.h
#include 
#include
#include
#include
#include

#ifndef DIALOG_H
#define DIALOG_H

#include 

class Dialog : public QDialog
{
    Q_OBJECT

public:
    Dialog(QWidget *parent = 0);
    ~Dialog();
private:
    //左側
    QLabel *UserNameLabel;
    QLabel *NameLabel;
    QLabel *SexLabel;
    QLabel *DepartmentLabel;
    QLabel *AgeLabel;
    QLabel *OtherLabel;
    QLineEdit *UserNameLineEdit;
    QLineEdit *NameLineEdit;
    QComboBox *SexComboBox;//組合框
    QTextEdit *DepartmentTextEdit;
    QLineEdit *AgeLineEdit;
    QGridLayout *LeftLayout;//網格布局

    //右側
    QLabel *HeadLabel; //右上角部分
    QLabel *HeadIconLabel;
    QPushButton *UpdateHeadBtn;
    QHBoxLayout *TopRightLayout;//水平盒布局

    QLabel *IntroductionLabel;
    QTextEdit *IntroductionTextEdit;
    QVBoxLayout *RightLayout;//垂直盒布局

    //底部
    QPushButton *OkBtn;
    QPushButton *CancelBtn;
    QHBoxLayout *ButtomLayout;

};

#endif // DIALOG_H


dialog.cpp文件

#include
#include
#include
#include
#include
#include
#include
#include

#include "dialog.h"

Dialog::Dialog(QWidget *parent)
    : QDialog(parent)
{
    setWindowTitle(tr("UsrInfo"));

    //左側
    UserNameLabel =new QLabel(tr("用戶名: "));
    UserNameLineEdit =new QLineEdit;

    NameLabel =new QLabel(tr("姓名:"));
    NameLineEdit = new QLineEdit;

    SexLabel = new QLabel(tr("性別:"));
    SexComboBox =new QComboBox;
    SexComboBox->addItem(tr("女"));
    SexComboBox->addItem(tr("男"));

    DepartmentLabel =new QLabel(tr("部門:"));
    DepartmentTextEdit =new QTextEdit;

    AgeLabel =new QLabel(tr("年齡:"));
    AgeLineEdit =new QLineEdit;

    OtherLabel =new QLabel(tr("備注:"));
    OtherLabel ->setFrameStyle(QFrame::WinPanel|QFrame::Sunken);//設置控件的風格,由形狀和陰影兩項配合設定

    LeftLayout =new QGridLayout();//因為不是主布局管理器,所以不用指定父窗口
    LeftLayout ->addWidget(UserNameLabel,0,0);  //用戶名   向布局裡加入需要的控件
    LeftLayout ->addWidget(UserNameLineEdit,0,1);

    LeftLayout->addWidget(NameLabel,1,0); //姓名
    LeftLayout->addWidget(NameLineEdit,1,1);

    LeftLayout->addWidget(SexLabel,2,0);//性別
    LeftLayout->addWidget(SexComboBox,2,1);

    LeftLayout->addWidget(DepartmentLabel,3,0);   //部門
    LeftLayout->addWidget(DepartmentTextEdit,3,1);

    LeftLayout->addWidget(AgeLabel,4,0);//年齡
    LeftLayout->addWidget(AgeLineEdit,4,1);

    LeftLayout->addWidget(OtherLabel,5,0,1,2); //其他,Wifdget(控件名,行,列,占用行數,占用列數)。

    LeftLayout->setColumnStretch(0,1);//設定兩列分別占用空間的比例
    LeftLayout->setColumnStretch(1,3);

    //右側
    HeadLabel =new QLabel(tr("頭像:"));
    HeadIconLabel =new QLabel;
    QPixmap icon(":/new/111/312.png");

    HeadIconLabel->setPixmap(icon);
    HeadIconLabel->resize(icon.width(),icon.height());
    UpdateHeadBtn =new QPushButton(tr("更新"));

    TopRightLayout =new QHBoxLayout();//完成右上側頭像的選擇區的布局
    TopRightLayout ->setSpacing(20);//設定各個控件之間的間距為20
    TopRightLayout ->addWidget(HeadLabel);
    TopRightLayout ->addWidget(HeadIconLabel);
    TopRightLayout ->addWidget(UpdateHeadBtn);

    IntroductionLabel =new QLabel(tr("個人說明:"));
    IntroductionTextEdit =new QTextEdit;

    RightLayout =new QVBoxLayout();//完成右側布局
    RightLayout ->setMargin(10);
    RightLayout ->addLayout(TopRightLayout);
    RightLayout ->addWidget(IntroductionLabel);
    RightLayout ->addWidget(IntroductionTextEdit);

    //底部
    OkBtn =new QPushButton(tr("確定"));
    CancelBtn =new QPushButton(tr("取消"));

    ButtomLayout =new QHBoxLayout();//完成下方兩個按鈕的布局
    ButtomLayout->addStretch();//在按鈕之前插入一個占位符,使兩個按鈕能夠靠右對齊,並且按鈕大小在調整時不變
    ButtomLayout->addWidget(OkBtn);
    ButtomLayout->addWidget(CancelBtn);

    QGridLayout *mainLayout =new QGridLayout(this);//實現主布局,指定父窗口
    mainLayout->setMargin(15);//設定對話框的邊距為15
    mainLayout->setSpacing(10);
    mainLayout->addLayout(LeftLayout,0,0);
    mainLayout->addLayout(RightLayout,0,1);
    mainLayout->addLayout(ButtomLayout,1,0,1,2);
    mainLayout->setSizeConstraint(QLayout::SetFixedSize);//設定最優化顯示

    //QHBoxLayout默認采用的是自左向右的方式順序排列插入控件或子布局,也可以通過調用setDirection()方法設定排列順序(eg:layout->setDirection(QBoxLayout::RightToLeft)),QVBoxLayout默認的是自上而下的方式順序插入控件或子布局,也可調用setDirection()方法設定
}

Dialog::~Dialog()
{

}


這裡存在一個問題:

\

這裡如果的路徑並不是圖片存儲的絕對路徑,教程裡直接是“312.png",這樣是不行的,導致圖片無法加載出來

解決方法:

\

右鍵第一個圖標,選擇添加新文件,選擇如下:

\

這個名稱隨意填寫

\

選擇所要添加到的項目名稱:

\

在這裡首先添加前綴,前綴名可改,然後添加所要添加的文件即圖片,然後再出問題的那行代碼裡添加前綴名即可

\

結果是完美的!

Copyright © Linux教程網 All Rights Reserved