对于我的GUI,我希望有两对按钮可以在滚动条上下滚动.第一组按钮应该在说scrollarea1上工作,第二组按钮应该在scrollarea2上工作.我放在scrollarea中的小部件称为viewport1和viewport2.由于两组按钮都应该相同(向上和向下滚动),我想我会创建两个名为scrollUp和scrollDown的插槽来处理两组按钮的滚动.不幸的是,我无法完成这项工作,需要一些帮助.我尝试过以下方法:
QPushButton up;
QPushButton down;
QPushButton up2;
QPushButton down2;
connect(&up,SIGNAL(clicked()),&up,SLOT(scrollUp()));
connect(&up2,SIGNAL(clicked()),&up,SLOT(scrollUp()));
connect(&down,SIGNAL(clicked()),&down,SLOT(scrollDown()));
connect(&down2,SIGNAL(clicked()),&down,SLOT(scrollDown()));
void MainWindow::scrollDown()
{
QScrollArea area;
QWidget view;
if((QPushButton) &sender = down)
{
area=scrollArea;
view=viewport;
}
if((QPushButton) &sender = down2)
{
area=scrollArea;
view=viewport;
}
int curpos = area.verticalScrollBar()->value();
area.verticalScrollBar()->setValue(curpos+15);
int newpos = area.verticalScrollBar()->value();
QPoint topLeft = area.viewport()->rect().topLeft();
view.move(topLeft.x(),topLeft.y()-(newpos));
}
void MainWindow::scrollUp()
{
QScrollArea area;
QWidget view;
if((QPushButton) &sender = up)
{
area=scrollArea;
view=viewport;
}
if((QPushButton) &sender = up2)
{
area=scrollArea2;
view=viewport2;
}
int curpos = area.verticalScrollBar()->value();
area.verticalScrollBar()->setValue(curpos-15);
int …Run Code Online (Sandbox Code Playgroud) 我正在尝试用 QPainter 绘制一个矩形。进展顺利,但我注意到,如果我在画家上设置相同颜色的钢笔和画笔,钢笔和画笔的 alpha 因子会以某种方式添加。这会导致笔绘制的线条显得不太透明。有什么办法可以防止这种颜色的添加吗?我希望如果钢笔和画笔颜色相同,则钢笔绘制的线条将是“不可见的”。下面是我的代码部分,用于绘制矩形和输出图像。
QBrush newbrush = QBrush(painter->brush());
newbrush.setColor(QColor(0, 0, 255, 125));
newbrush.setStyle(Qt::SolidPattern);
painter->setBrush(newbrush);
QPen newpen = QPen(painter->pen());
newpen.setColor(QColor(0, 0, 255, 125));
newpen.setWidth(10);
painter->setPen(newpen);
painter->drawRect(QRect(QPoint(100, 50), QPoint(500, 500)));
Run Code Online (Sandbox Code Playgroud)
我有一个QPushButton我想设置背景颜色.我可以使用样式表:
m_iconButton->setStyleSheet("QPushButton {"
"background-color: red "
"}");
Run Code Online (Sandbox Code Playgroud)
但是我想在函数中使用它void foo(const QColor& a_color).我如何确保样式表将此a_color作为参数?
所以像这样:
void foo(const QColor& color) {
m_iconButton->setStyleSheet("QPushButton {"
"background-color: a_color"
"}");
}
Run Code Online (Sandbox Code Playgroud)
有没有办法用样式表做到这一点?如果没有,我怎么能没有它们呢?
我正在处理具有以下问题的应用程序.基本上有很多对象可能会破坏自己.
void Foo::func()
{
...
Bar b;
b.func2();
}
Run Code Online (Sandbox Code Playgroud)
这func2可能会破坏foo调用它的对象.由于不太可能发生这种情况,我想确保foo在此调用之后无法访问该对象的任何成员变量,因为我无法保证它们仍然有效.如果对b的这个调用是最后一次调用我完全没问题,但由于我不是唯一一个在这个项目上工作且破坏不明显的人,我想this在这些调用之后实现阻止使用的东西.有没有办法在不完全重构当前设计的情况下实现这一点(因为它在整个项目中广泛使用)?
一些背景信息:
它是一个Qt UI应用程序,它使用QML来跟踪一堆"屏幕"(屏幕是QML +它对应的C++模型).Bar我的例子中的类是'堆栈管理器',它控制着屏幕的生命周期.这是一个单身人士(我知道).的Foo类为特定QML一个C++模型.该函数Foo::func()是一个可以从QML中的用户输入或其他系统事件调用的函数.该函数通常处理事件,但偶尔它可以告诉屏幕管理器删除一个或多个屏幕,这些屏幕又删除对应于该屏幕的模型(可能是调用模型).