天天看点

【Qt】QMainWindow 一些部件的函数

继承自QMainWindow类,在构造函数里创建实例

(引用新的widget时需要引入,头文件名与类名相同)

菜单

QMenuBar *mb=menuBar();	//创建菜单栏
    QMenu *m1=mb->addMenu("file");	//添加菜单(菜单栏其中一项)
    QAction *a1=m1->addAction("new");	
    //添加动作,这里可以看见点击菜单以后弹出的页
    m1->addSeparator();			//添加分割线
    QAction *a2=m1->addAction("open");
    connect(a1,&QAction::triggered,this,
            [](){
        qDebug()<<"you're getting a new file";
    }
    );	//lamda表达式,需要在.pro里添加CONFIG += C++11
           

工具栏

QToolBar *tb=addToolBar("");
    QPushButton *p=new QPushButton(this);
    p->resize(10,10);		//设置大小
    tb->addWidget(p);		//给工具栏添加组件
           

状态栏

QStatusBar *sta=statusBar();
    QLabel *la=new QLabel("hello",this);
    	//第一个参数是显示的文字,第二个对象是parent
    sta->addWidget(la);
           

文本框

QTextEdit *te=new QTextEdit(this);
    setCentralWidget(te);	//设置为中心组件,显示在中间且占比最大
           

悬浮窗

QDockWidget *dc=new QDockWidget(this);
    addDockWidget(Qt::RightDockWidgetArea,dc);
    	//显示位置,被操作悬浮窗
    dc->setWidget(new QPushButton("oh",this));//这里用的是set
           

模态与非模态对话框

connect(a2,&QAction::triggered,this,
            [](){
        QDialog *dl=new QDialog();
        dl->exec();		//运行时阻塞在此,实现模态对话框
    }
    );
    
    connect(a1,&QAction::triggered,this,
            [=](){	//等号负责把外面变量的参数传递进来(只读)
        sw.show();	//在头文件添加子窗口成员变量传参,不阻塞,非模态
        
        //或者通过动态分配内存(用指针),程序运行结束时再释放内存
        QDialog *dl2=new QDialog();
        dl2->setAttribute(Qt::WA_DeleteOnClose);//关闭的时候释放内存
        dl2->show();
    }
    );
           

消息框

//parent,标题,内容,按钮
        int exval=QMessageBox::question(this,"You want to exit","Are you sure?",
                    QMessageBox::Yes|QMessageBox::No|QMessageBox::Cancel);
                    //根据接收到的返回值做出相应的反应
        switch (exval){
        case QMessageBox::Yes:
            qDebug()<<"yes";
            break;
        case QMessageBox::No:
            qDebug()<<"no";
            break;
        default:
            break;
    }
    }
           

文件对话框

//“../”表示从上一个路径开始展示,用mypath获得打开的文件的完整路径
//最后一项用来限制可以打开的文件格式,类名(类型),项内用空格,项间用;;
        QString mypath=QFileDialog::getOpenFileName(this,"open","../",
        "source(*.cpp *.h);;all(*.*)");
        qDebug()<<mypath;
           

继续阅读