个人主页~
Qt窗口
- 一、菜单栏
- 二、工具栏
- 三、状态栏
- 四、浮动窗口
Qt窗口是通过QMainWindow类来实现的,我们之前的学习是通过QWidget类实现的
QMainWindow包含一个菜单栏Menu Bar②,多个工具栏Tool Bars③,多个浮动窗口Dock Widgets,一个状态栏Status Bar⑤和一个中心部件Central Widget④
①是Window Title
一、菜单栏
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//设置窗口名this->setWindowTitle("我的word文件");//创建菜单栏,将菜单栏设置到窗口当中QMenuBar* mb = new QMenuBar(this);this->setMenuBar(mb);//设置菜单名,将菜单设置到菜单栏中QMenu* m = new QMenu("文件");mb->addMenu(m);//设置菜单项,将菜单项设置到菜单当中QAction* a1 = new QAction("打开");QAction* a2 = new QAction("保存");QAction* a3 = new QAction("关闭");m->addAction(a1);m->addAction(a2);m->addAction(a3);//设置中心部件QTextEdit* te = new QTextEdit(this);this->setCentralWidget(te);te->setPlaceholderText("请输入");
}
menubar
让我们加上对应的功能
connect(a1,&QAction::triggered,this,&MainWindow::load);connect(a2,&QAction::triggered,this,&MainWindow::save);connect(a3,&QAction::triggered,this,&MainWindow::quit);
void MainWindow::save()
{//创建文件对话框QFileDialog* dg = new QFileDialog(this);//根据文件名创建文本文件QString filename = dg->getSaveFileName(this,"保存文件","C:/Users/14725/Desktop");qDebug() << filename;//将filename转换成一个标准C字符串,然后使用这个路径来创建一个std::ofstream对象file,以便打开并写入文件std::ofstream file(filename.toStdString().c_str());if(!file.is_open()){qDebug() << "文件保存失败";return;}//将textedit中的内容通过普通文本存放在text中const QString& text = te->toPlainText();//通过流输入到file文件file << text.toStdString();//关闭文件file.close();
}void MainWindow::load()
{//创建文件对话框QFileDialog* d = new QFileDialog(this);//获取到指定位置的文件名QString filename = d->getOpenFileName(this,"加载文件","C:/Users/14725/Desktop");//将filename转换成一个标准C字符串,然后使用这个路径来创建一个std::ifstream对象file,以便加载文件std::ifstream file(filename.toStdString().c_str());if(!file.is_open()){qDebug() << "文件加载失败";return;}//创建两个字符串std::string content;std::string line;//一行一行从文件中扫描输入到contentwhile (std::getline(file, line)){content += line;content += "\n";}//关闭文件file.close();//获取到content内容,呈现到textedit当中QString text = QString::fromStdString(content);te->setPlainText(text);
}
menubar_2
二、工具栏
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建工具栏,将其添加到右侧区域QToolBar* tb = new QToolBar(this);addToolBar(Qt::RightToolBarArea,tb);//设置工具栏停留的位置只能为最左侧和最右侧tb->setAllowedAreas(Qt::LeftToolBarArea|Qt::RightToolBarArea);//设置是否可以作为一个独立的窗口被拖拽tb->setFloatable(false);//设置是否可以移动工具栏tb->setMovable(true);//设置工具栏内容QAction* openAction = new QAction("open",this);QAction* newAction = new QAction("new",this);tb->addAction(openAction);tb->addSeparator();tb->addAction(newAction);//在工具栏中添加控件QLabel* label = new QLabel("super little monster",this);tb->addWidget(label);
}
toolbar
三、状态栏
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建和设置状态栏,因为一个窗口创建默认有状态栏,//这里是直接把新创建的状态栏参数设置到已有的状态栏当中QStatusBar* sb = statusBar();setStatusBar(sb);//状态栏的显示内容和时间sb->showMessage("super_little_monster",2000);//设置一个label设置到右下角永久显示,左下角永久显示就是用addWidgetQLabel* label = new QLabel("我在右下角",this);sb->addPermanentWidget(label);
}
statusbar
四、浮动窗口
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);//创建浮动窗口并将其设置在当前窗口中QDockWidget* dw = new QDockWidget("浮动窗口",this);addDockWidget(Qt::BottomDockWidgetArea,dw);//设置浮动窗口四个位置都可停靠,还有四个选项,分别是上下左右://Qt::TopDockWidgetArea//Qt::BottomDockWidgetArea//Qt::LeftDockWidgetArea//Qt::RightDockWidgetAreadw->setAllowedAreas(Qt::AllDockWidgetAreas);
}
dockwidget
今日分享到此结束~