2019-11-22 09:36:15 u011625775 阅读数 19
  • Qt Quick 4小时入门

    Qt Quick(QML)是Qt 5里推荐的UI开发框架,能够为各种设备搭建流畅且绚丽的用户界面。本课程删繁就简,精心选择主题,通过短短的几节课,即可让大家跨越Qt Quick的入门门槛,为进一步学习奠定坚实基础。

    48271 人正在学习 去看看 安晓辉
QGroupBox {
    border-width:1px;   
   border-style:solid;
  border-color:lightGray;  
  margin-top: 0.5ex; 
}
QGroupBox::title {
     subcontrol-origin: margin;
     subcontrol-position: top left;
   left:25px;       
     margin-left: 0px;
     padding:0 1px;  
}

打开ui文件,右键添加sheet style  ,把上述代码添加进去后,点击 apply

2015-09-18 10:59:53 lichao_ustc 阅读数 2012
  • Qt Quick 4小时入门

    Qt Quick(QML)是Qt 5里推荐的UI开发框架,能够为各种设备搭建流畅且绚丽的用户界面。本课程删繁就简,精心选择主题,通过短短的几节课,即可让大家跨越Qt Quick的入门门槛,为进一步学习奠定坚实基础。

    48271 人正在学习 去看看 安晓辉

右键改变样式表,添加下面的样式就可以解决了

QGroupBox {
    border: 1px solid gray;
    border-radius: 9px;
    margin-top: 0.5em;
}

QGroupBox::title {
    subcontrol-origin: margin;
    left: 10px;
    padding: 0 3px 0 3px;
}
2016-11-10 13:59:35 ifeng12358 阅读数 4961
  • Qt Quick 4小时入门

    Qt Quick(QML)是Qt 5里推荐的UI开发框架,能够为各种设备搭建流畅且绚丽的用户界面。本课程删繁就简,精心选择主题,通过短短的几节课,即可让大家跨越Qt Quick的入门门槛,为进一步学习奠定坚实基础。

    48271 人正在学习 去看看 安晓辉

Qt初级教程(一)实现简易的计算器

本文原创作者:冯一川(ifeng12358@163.com),如有转载,请注明原作者及出处。

 

本文软件环境linux(Ubuntu)+Qt 5.6.0。

源代码github地址:Linux下的简易计算器(Qt)

本文使用的技术点有:

1、信号和槽的使用,包括(emit)的使用;

2、字符串的处理,QString函数;

3、QLabel的边框设置。

 

创建一个QMainWindow项目。

先看界面布局

 

头文件mianwindow.h

 

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

//#define QT_NO_OPENGL
#include <QMainWindow>

#include <QString>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();


    void displayInput(QString str);


    void on_pushButton_2_clicked();

    void on_pushButton_3_clicked();

    void on_pushButton_4_clicked();

    void on_pushButton_5_clicked();

    void on_pushButton_6_clicked();

    void on_pushButton_7_clicked();

    void on_pushButton_8_clicked();

    void on_pushButton_9_clicked();

    void on_pushButton_10_clicked();

    void on_pushButton_12_clicked();

    void on_pushButton_13_clicked();

    void on_pushButton_14_clicked();

    void on_pushButton_15_clicked();

    void on_pushButton_11_clicked();

    void on_pushButton_16_clicked();

signals:
    void input(QString str);

private:
    Ui::MainWindow *ui;

    bool _Flag;

};

#endif // MAINWINDOW_H


mainwindow.cpp文件

 

 

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    ui->my_label->setStyleSheet("border:0.5px solid gray;");
    ui->my_label->setText("");
    _Flag = false;

    connect(this,SIGNAL(input(QString)),this,SLOT(displayInput(QString)));
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::displayInput(QString str)
{
    ui->my_label->setText(ui->my_label->text() + str);
}

void MainWindow::on_pushButton_clicked() //num 1
{
    emit input(ui->pushButton->text());
}

void MainWindow::on_pushButton_2_clicked() //num 2
{
    emit input(ui->pushButton_2->text());
}

void MainWindow::on_pushButton_3_clicked() //num 3
{
    emit input(ui->pushButton_3->text());
}

void MainWindow::on_pushButton_4_clicked() //num 4
{
    emit input(ui->pushButton_4->text());
}

void MainWindow::on_pushButton_5_clicked() //num 5
{
    emit input(ui->pushButton_5->text());
}

void MainWindow::on_pushButton_6_clicked() //num 6
{
    emit input(ui->pushButton_6->text());
}

void MainWindow::on_pushButton_7_clicked() //num 7
{
    emit input(ui->pushButton_7->text());
}

void MainWindow::on_pushButton_8_clicked() //num 8
{
    emit input(ui->pushButton_8->text());
}

void MainWindow::on_pushButton_9_clicked() //num 9
{
    emit input(ui->pushButton_9->text());
}

void MainWindow::on_pushButton_10_clicked() //num 0
{
    emit input(ui->pushButton_10->text());
}

void MainWindow::on_pushButton_12_clicked() //num +
{
    if(_Flag == false)
    {
        emit input(ui->pushButton_12->text());
        _Flag = true;
    }else{
        on_pushButton_11_clicked();
        ui->my_label->setText(ui->my_label->text()+"+");
    }
}

void MainWindow::on_pushButton_13_clicked() //num -
{
    if(_Flag == false)
    {
    emit input(ui->pushButton_13->text());
    _Flag = true;
    }else{
        on_pushButton_11_clicked();
        ui->my_label->setText(ui->my_label->text()+"-");
    }
}

void MainWindow::on_pushButton_14_clicked() //num *
{
    if(_Flag == false)
    {
    emit input(ui->pushButton_14->text());
    _Flag = true;
    }else{
        on_pushButton_11_clicked();
        ui->my_label->setText(ui->my_label->text()+"*");
    }

}

void MainWindow::on_pushButton_15_clicked() //num /
{
    if(_Flag == false)
    {
    emit input(ui->pushButton_15->text());
    _Flag = true;
    }else{
        on_pushButton_11_clicked();
        ui->my_label->setText(ui->my_label->text()+"/");
    }
}

void MainWindow::on_pushButton_11_clicked() //num =
{
    QString str1 = ui->my_label->text();

    if(str1.contains('+',Qt::CaseSensitive))
    {
        int iPos = str1.indexOf('+',Qt::CaseSensitive);
        QString nValue = "";
        int iValue = (str1.left(iPos)).toInt()+(str1.right(iPos)).toInt();
        nValue = QString("%1").arg(iValue);
        ui->my_label->setText(nValue);
        _Flag = false;
    }else if(str1.contains('-',Qt::CaseSensitive))
    {
        int iPos = str1.indexOf('-',Qt::CaseSensitive);
        QString nValue = "";
        int iValue = (str1.left(iPos)).toInt()-(str1.right(iPos)).toInt();
        nValue = QString("%1").arg(iValue);
        ui->my_label->setText(nValue);
        _Flag = false;
    }else if(str1.contains('*',Qt::CaseSensitive))
    {
        int iPos = str1.indexOf('*',Qt::CaseSensitive);
        QString nValue = "";
        int iValue = (str1.left(iPos)).toInt()*(str1.right(iPos)).toInt();
        nValue = QString("%1").arg(iValue);
        ui->my_label->setText(nValue);
        _Flag = false;
    }else if(str1.contains('/',Qt::CaseSensitive))
    {

        int iPos = str1.indexOf('/',Qt::CaseSensitive);
        if((str1.right(iPos))!="0")
        {
            QString nValue = "";
            double iValue = (str1.left(iPos)).toDouble()/(str1.right(iPos)).toDouble();
            nValue = QString("%1").arg(iValue);
            ui->my_label->setText(nValue);
        }else{
            ui->my_label->setText("0");
        }
        _Flag = false;
    }
}

void MainWindow::on_pushButton_16_clicked()
{
    _Flag = false;
    ui->my_label->setText("");
}


main.cpp文件

 

 

#include "mainwindow.h"
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();

    return a.exec();
}


编辑完之后,运行就可以了。

 

有什么不理解的,大家可以给我发邮件(ifeng12358@163.com)。

源代码地址:Github上的代码地址

 

 

2019-10-12 13:23:53 qq_25490573 阅读数 29
  • Qt Quick 4小时入门

    Qt Quick(QML)是Qt 5里推荐的UI开发框架,能够为各种设备搭建流畅且绚丽的用户界面。本课程删繁就简,精心选择主题,通过短短的几节课,即可让大家跨越Qt Quick的入门门槛,为进一步学习奠定坚实基础。

    48271 人正在学习 去看看 安晓辉

无边框,拖拽,阴影:

this->setWindowFlag(Qt::FramelessWindowHint);                                                     设置窗口无边框

void MainWindow::mousePressEvent(QMouseEvent *event){                                   鼠标按下事件
    mousepos = event->globalPos();                                                                            记录鼠标全局坐标
    windowspos = QPoint(this->x(),this->y());                                                               记录窗口全局坐标
}
void MainWindow::mouseMoveEvent(QMouseEvent *event){                                    鼠标移动事件
    offset = event->globalPos()-mousepos;                                                                   计算偏差值
    windowspos +=offset;                                                                                              窗口新坐标
    this->move(windowspos);                                                                                        移动窗口
    mousepos = event->globalPos();                                                                             更新鼠标全局坐标
}

    QGraphicsDropShadowEffect * shader  = new QGraphicsDropShadowEffect();    声明一个阴影
    shader->setBlurRadius(10);                                                                                    设置阴影粗细
    shader->setColor(Qt::black);                                                                                   设置阴影颜色
    shader->setOffset(0);                                                                                               设置阴影偏移
    ui->widget->setGraphicsEffect(shader);                                                                  设置阴影物体

setAttribute(Qt::WA_TranslucentBackground, true);                                                   设置窗体透明(放在ui->setupUi(this)之前)

StyleSheet 样式表:

QPushButton                                                                      鼠标无操作时
{
    background-color: rgba(241, 26, 26,0);                          背景色
    border-width:4px;                                                           边框宽度
    border-radius:30px;                                                        圆角像素
    border-color: rgb(173, 127, 168);                                   边框颜色
    color:blue;                                                                      字体颜色
}

QPushButton:hover                                                            鼠标悬停时
{
}
QPushButton:pressed                                                          鼠标按下时
{
}

qss文件是以.qss结尾的文件。内容是qss语句,可以通过函数this->loadStyleSheet(":/qss/myStyleSheet.qss");加载

文件遍历:

filepath = QFileDialog::getExistingDirectory(this,"SelectDirectory","/home/wandong/");      打开文件对话框

QFileInfoList file = dir.entryInfoList();                            获取目录下的所有文件

dir.exists()    目录是否存在

var.isDir()      文件是否是目录

视频模块:

QT       += core gui multimedia multimediawidgets

    QMediaPlayer * media =new QMediaPlayer;                             声明视频类
    QVideoWidget * video =new QVideoWidget;                             声明播放界面
    video->setParent(this);                                             设置在主窗口
    media->setVideoOutput(video);                                        设置视频输出窗口
    //media->setMedia(QUrl::fromLocalFile("E:/linux/qt/text/Movie/haha.mp4"));  选择文件路径
    video->setGeometry(0,0,this->width(),this->height());                 设置显示条件
    video->show();                                                        将界面显示
    //media->play();                                                      播放视频

VLC模块:

下载地址:https://github.com/vlc-qt/vlc-qt/releases

.pro文件添加:

VLC_INSTALL_PATH = D:/Qt/vlclib
INCLUDEPATH += D:/Qt/vlclib/include
CONFIG(debug, debug|release) {
    LIBS += -L$$VLC_INSTALL_PATH/lib -lVLCQtCored -lVLCQtWidgetsd -lVLCQtQmld
} else {
    LIBS += -L$$VLC_INSTALL_PATH/lib -lVLCQtCore -lVLCQtWidgets -lVLCQtQml
}

简单加载视频播放:

    VlcInstance * vlcintance =new VlcInstance(VlcCommon::args(),this) ;      实例一个vlc
    VlcMediaPlayer * mediaplayer = new VlcMediaPlayer(vlcintance) ;           声明一个播放器
    VlcWidgetVideo * widgetvideo = new VlcWidgetVideo(mediaplayer,this) ;     声明播放器窗口
    widgetvideo->setGeometry(0,0,this->width(),this->height());               设置播放器窗口
    mediaplayer->setVideoWidget(widgetvideo);                                  播放器与窗口关联
    mediaplayer->open(&VlcMedia("E:/linux/qt/text/Movie/haha.mp4",true,vlcintance)); 播放器打开文件
    mediaplayer->play();//pause  stop                                          播放器播放 暂停 停止

控制声音的组件:VlcWidgetVideo

控制进度的组件:VlcWidgetVolumeSlider

       setvolume/volume    setmute/mute   volume down / up                                 设置音量 静音 声音大小

2016-09-02 15:14:26 maowendi 阅读数 3651
  • Qt Quick 4小时入门

    Qt Quick(QML)是Qt 5里推荐的UI开发框架,能够为各种设备搭建流畅且绚丽的用户界面。本课程删繁就简,精心选择主题,通过短短的几节课,即可让大家跨越Qt Quick的入门门槛,为进一步学习奠定坚实基础。

    48271 人正在学习 去看看 安晓辉

1.问题

QGroupBox这个控件在Window和Ubuntu下的表现是不一样的,在window下是有边框的,但是在Ubuntu下就是空白的,什么也看不见。

2.解决

本来以为会是一个方法设置的结果,在网上查了一下,有人用QSS的方式显示了一下。在此基础上加了一行代码变的更好看一点。

3.代码(这是加载.QSS文件的方式实现的)

style.qss文件内容

QGroupBox{
border-width:2px;
border-style:solid;
border-radius: 10px;
border-color:gray;
margin-top:0.5ex;
}
QGroupBox::title{
subcontrol-origin:margin;
subcontrol-position:top left;
left:10px;
margin-left:0px;
padding:0 1px;
}

Qt加载QSS文件代码(红色部分)

#include "mainwindow.h"
#include <QApplication>
#include <QFile>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    QString qss;
    QFile qssFile(":style.qss");
    qssFile.open(QFile::ReadOnly);
    if(qssFile.isOpen())
    {
        qss = QLatin1String(qssFile.readAll());
        qApp->setStyleSheet(qss);
        qssFile.close();
    }

    w.show();


    return a.exec();
}

4.效果图


源码地址:http://download.csdn.net/detail/maowendi/9620132(代码中有dateedit下拉显示的方法)


没有更多推荐了,返回首页