我正在使用Qt 4.5(在Windows Vista下,但希望它是跨平台的)开发一个应用程序。我正在使用C ++。
我想创建一个弹出窗口,其中包含一个QLineEdit小部件,当用户与QLineEdit小部件交互时,弹出窗口不会被激活(主应用程序窗口保持活动状态)。
使用Qt :: Popup | Qt :: Window标志创建具有所需效果的窗口(小部件),但我不想要提供的3D阴影边框效果。我想要一个无边框的窗口。请注意,Qt :: FramelessWindowHint标志不能实现此目的。
有人有什么线索吗?
进一步说明:下面是一个简单的测试应用程序中的代码片段,它创建了一个带有按钮的窗口。当按下按钮时,将显示一个弹出窗口,用户可以在其中键入内容。当用户这样做时,主窗口保持激活状态:
我想创建一个弹出窗口,其中包含一个QLineEdit小部件,当用户与QLineEdit小部件交互时,弹出窗口不会被激活(主应用程序窗口保持活动状态)。
使用Qt :: Popup | Qt :: Window标志创建具有所需效果的窗口(小部件),但我不想要提供的3D阴影边框效果。我想要一个无边框的窗口。请注意,Qt :: FramelessWindowHint标志不能实现此目的。
有人有什么线索吗?
进一步说明:下面是一个简单的测试应用程序中的代码片段,它创建了一个带有按钮的窗口。当按下按钮时,将显示一个弹出窗口,用户可以在其中键入内容。当用户这样做时,主窗口保持激活状态:
http://howlettresearch.com/popup_img_1.png
然而,请注意弹出窗口的阴影边框(我无法去除它)。与此相比,按照注释行中的方式创建窗口可以创建一个没有阴影的弹出式窗口,但是当用户点击弹出窗口中的QLineEdit时,主窗口不再处于活动状态。您可以看到主窗口的阴影已经改变。http://howlettresearch.com/popup_img_2.png
我真的需要一个弹出窗口,它表现得像是主窗口的一部分。顺便说一句,当点击窗口外部时,弹出窗口会消失,但这几乎是我想要的行为,我可以使用 grabMouse 等方法来做我想做的事情...只要我能摆脱那个阴影!
PopupTest::PopupTest(QWidget *parent, Qt::WFlags flags)
: QMainWindow(parent, flags)
{
QPushButton* pb = new QPushButton("test button");
setCentralWidget(pb);
QObject::connect(pb, SIGNAL(clicked()), this, SLOT(handleClick()));
}
void PopupTest::handleClick()
{
//QFrame* popup1 = new QFrame(this, Qt::Tool | Qt::Window | Qt::FramelessWindowHint);
QFrame* popup1 = new QFrame(this, Qt::Popup | Qt::Window );
popup1->resize(150,100);
QLineEdit *tmpE = new QLineEdit( popup1 );
connect( tmpE, SIGNAL( returnPressed() ), popup1, SLOT( hide() ) );
tmpE->setGeometry(10,10, 130, 30);
tmpE->setFocus();
popup1->show();
}
PopupTest::~PopupTest()
{
}