• 5954阅读
  • 5回复

怎么写一个类似QDateEdit,可以popup出窗口的东西 [复制链接]

上一主题 下一主题
离线ychwn
 

只看楼主 倒序阅读 楼主  发表于: 2010-07-19
点某个位置,在下方弹出一个窗口

就像QDateEdit点右边的三角形后会弹出一个日历控件

setWindowFlags(Qt::Popup)可以吗?

具体怎么做啊,麻烦各位给点思路,谢谢
离线ychwn

只看该作者 1楼 发表于: 2010-07-19
又找到了个mapToGlobal函数
离线dbzhang800

只看该作者 2楼 发表于: 2010-07-19
恩,主要的东西你都列出来了:
1. 设置 Windowflags
2. 用 move 将其移动到合适的位置(一般来说会借助mapToGlobal)
3. 用 show 将其显示出来
离线ychwn

只看该作者 3楼 发表于: 2010-07-20
已经弄好了,谢谢
离线ychwn

只看该作者 4楼 发表于: 2010-07-20
BlobEditer::BlobEditer(QWidget * parent) : QLineEdit(parent)
{
    setText(tr("Binary data"));
    setReadOnly(true);
    _popup = new QWidget(0);
    //_popup->setStyleSheet("background-color: red;");
    _popup->setWindowFlags(Qt::Popup);
    _popup->resize(150,200);
}

BlobEditer::~BlobEditer()
{
    delete _popup;
}

void BlobEditer::mousePressEvent(QMouseEvent * e)
{
    if(_popup)
    {
        _popup->move(this->mapToGlobal(QPoint(0, height())));
        _popup->show();
    }
}
离线ychwn

只看该作者 5楼 发表于: 2010-07-20
新问题,弹出来的QWidget上放其他控件(比如QLineEdit)后,一点这些控件弹出窗就没了

如果弹出的窗口直接设置成QTableWidget,也是一点窗口就消失了
快速回复
限100 字节
 
上一个 下一个