找回密码
 立即注册
收起左侧

怎么实现Quick + Modal ,实现登录界面

4
回复
7966
查看
[复制链接]
累计签到:2 天
连续签到:1 天
来源: 2016-10-25 18:12:06 显示全部楼层 |阅读模式
1Qter豆
本帖最后由 changtj 于 2016-10-25 18:15 编辑

[img]file:///C:\Users\changtj\AppData\Roaming\Tencent\Users\2992599419\QQ\WinTemp\RichOle\5@}(6$GK6{WR3[3XAU66[O0.png[/img]


哪位可以指导一下,第14行设为 modal 第15行show 后,运行到了25行。本想实现的效果是运行到了15行就不再往下执行了



想用QuickDialog,但发现20行的qobject_cast转换失败,搜索了下quickdialog没有默认安装,需要再单独下载
  1. main.cpp

  2. #include <QApplication>
  3. #include <QQmlApplicationEngine>
  4. #include <QQuickView>
  5. #include <QQuickItem>
  6. #include <QDialog>
  7. int main(int argc, char *argv[])
  8. {
  9.     QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
  10.     QApplication app(argc, argv);

  11.     QQuickView * pQuickView = new QQuickView();

  12.     pQuickView->setSource(QUrl(QLatin1String("qrc:/login.qml")) );
  13.     pQuickView->setModality(Qt::ApplicationModal );
  14.     pQuickView->show();

  15.     //QQuickItem * rootItem =   pQuickView->rootObject();
  16.    // QObject * pObj = rootItem->findChild<QObject*>("dialogLogin");

  17.     //QDialog *pQDialog = qobject_cast<QDialog *>(pObj);
  18.    // pQDialog->exec();
  19.     //QObject * pObj = rootItem->findChild<QObject*>("quitButton");


  20.     QApplication::processEvents();

  21.     QQmlApplicationEngine engine;
  22.     engine.load(QUrl(QLatin1String("qrc:/main.qml")));



  23.     return app.exec();
  24. }
复制代码
  1. login.qml

  2. import QtQuick 2.7
  3. import QtQuick.Dialogs 1.2
  4. import QtQuick.Controls 1.4
  5. import QtQuick.Window 2.2
  6. Window{

  7.     LoginForm {

  8.         Dialog{
  9.             objectName:"dialogLogin";
  10.         }

  11.     }

  12. }
复制代码
  1. loginForm.ui.qml

  2. import QtQuick 2.7
  3. import QtQuick.Controls 2.0
  4. import QtQuick.Layouts 1.0

  5. Item {
  6.     width: 400
  7.     height: 400

  8.     TextInput {
  9.         id: textInput1
  10.         x: 107
  11.         y: 85
  12.         width: 80
  13.         height: 20
  14.         text: qsTr("Text Input")
  15.         font.pixelSize: 12
  16.     }
  17. }
复制代码

附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2016-10-26 09:13:23 显示全部楼层
QML里面用模态的话,好像Quick2里面自带 Dialog  和 Window。可以用这2个来做。我之前试过 是可行的
回复

使用道具 举报

累计签到:2 天
连续签到:1 天
2016-10-26 13:14:52 显示全部楼层
a408815041 发表于 2016-10-26 09:13
QML里面用模态的话,好像Quick2里面自带 Dialog  和 Window。可以用这2个来做。我之前试过 是可行的 ...

有示例吗?Dialog 具体是哪个类呢
回复

使用道具 举报

尚未签到

2016-10-27 00:08:10 显示全部楼层
直接纯qml就能实现啊,参考qt quick control的例子,可以用stackview来实现
回复

使用道具 举报

累计签到:410 天
连续签到:1 天
2016-10-28 19:48:30 显示全部楼层
Dialog QML Type
A generic QtQuick dialog wrapper with standard buttons. More...

Import Statement:
import QtQuick.Dialogs 1.2
Since:
Qt 5.3
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了