我想指定QSlider可以滑动的步骤,就像使用QSpinBox一样setSingleStep.我尝试使用QAbstractSlider的setSingleStep,但这似乎没有效果.
有任何想法吗?
我目前正在使用样式表来设计应用程序的主题。这是我用于 QTabWidget 的样式表:
/*QTabBar et QTabWidget*/
QTabBar::tab {
background: qlineargradient(spread:pad, x1:0.5, y1:0, x2:0.5, y2:1, stop:0 rgba(73, 73, 74, 255), stop:1 rgba(40, 40, 40, 255));
border: 1px solid rgb(190, 190, 190);
max-height: 0.6em;
min-width: 0.6em;
padding: 5px;
margin-left: -1px;
margin-right: -1px;
}
QTabBar::tab:selected, QTabBar::tab:hover {
background: qlineargradient(spread:pad, x1:0.5, y1:1, x2:0.5, y2:0, stop:0 rgba(39, 117, 219, 255), stop:1 rgba(107, 171, 249, 255));
}
QTabBar::tab:last {
border-top-right-radius: 3px;
border-bottom-right-radius: 3px;
margin-right: 0px;
}
QTabBar::tab:first {
border-top-left-radius: 3px;
border-bottom-left-radius: 3px;
margin-left: 0px;
}
QTabBar::tab:only-one …Run Code Online (Sandbox Code Playgroud) 我的QTabWidget实现没有检测到它tabCloseRequested()和currentChanged()信号.
TileSheetManager::TileSheetManager(QWidget *parent)
: QTabWidget(parent)
{
int w = WIDTH;
int h = HEIGHT;
this->setMinimumSize(w, h);
this->setMaximumSize(w, h);
setTabsClosable(true);
setTabShape(QTabWidget::Rounded);
connect(this, SIGNAL(tabCloseRequested(int index)), this, SLOT(closeTileWidget(int index)));
connect(this, SIGNAL(currentChanged(int index)), this, SLOT(tabChanged(int index)));
}
Run Code Online (Sandbox Code Playgroud)
qDebug()对我不起作用,所以我正在使用QMessageBox它.
void TileSheetManager::closeTileWidget(int index)
{
QMessageBox msgBox;
msgBox.setText("Tab " + QString::number(index) + " removed!");
msgBox.exec();
TileWidget *t = (TileWidget *) widget(index) ;
t->deleteLater();
removeTab(index);
}
void TileSheetManager::tabChanged(int index)
{
QMessageBox msgBox;
msgBox.setText("Tab was Changed!");
msgBox.exec();
TileWidget *t;
for(int i = …Run Code Online (Sandbox Code Playgroud) 我想创建一个窗口并添加一个QTabWidgets以及我想要的小部件.所以我遵循了Qt TabDialog示例,据我所知,我遵循了与示例中相同的路径.问题是在试图加我的小部件的标签我得到这个错误:"/home/user/Programming/C++/QtTests/TabExample/TabExample-build-desktop-Desktop_Qt_4_8_1_for_GCC__Qt_SDK__Release/../TabExample/tabwidget.cpp:20:错误:没有匹配函数来调用'QTabWidget :: addTab(Tab_One*,QString*&)'".为什么我会收到此错误,因为Tab_One是从QWidget继承的?这是我的主要小部件代码:
头文件:
#ifndef TABWIDGET_H
#define TABWIDGET_H
#include <QWidget>
class QTabWidget;
class Tab_One;
class Tab_Two;
class QString;
class QHBoxLayout;
class QDialog;
class TabDialog : public QDialog {
Tab_One *firstTab;
Tab_Two *secondTab;
QTabWidget *myTabWidget;
QString *labelTabOne;
QString *labelTabTwo;
QHBoxLayout *layout;
public:
TabDialog(QWidget *parent = NULL);
};
#endif // TABWIDGET_H
Run Code Online (Sandbox Code Playgroud)
和源文件:
#include <QWidget>
#include <QDialog>
#include <QTabWidget>
#include <QHBoxLayout>
#include <QString>
#include "tabwidget.h"
#include "tab1.h"
#include "tab2.h"
TabDialog::TabDialog(QWidget *parent) : QDialog(parent)
{
layout = new QHBoxLayout;
labelTabOne = new QString("My …Run Code Online (Sandbox Code Playgroud) 我想QLineEdit用于输入.我的问题是我不知道如何阅读其内容.
比方说我有:
QLineEdit *edit = new QLineEdit("");
Run Code Online (Sandbox Code Playgroud)
将其添加到GUI后如何获取内容?提前致谢.
我正在尝试使用鼠标按下事件来处理我创建的小部件,但每次单击小部件时,窗口都会停止响应,我必须终止程序.有谁知道如何解决这个问题以及如何改变颜色?
这是.h和.cpp文件.
.cpp文件:
#include "iconwidget.h"
#include <QPaintEvent>
#include <QPainter>
#include <QPainterPath>
iconWidget::iconWidget(QWidget *parent) :
QWidget(parent)
{
this->resize(ICON_WIDGET_WIDTH,ICON_WIDGET_HEIGHT);
pressed = false;
}
void iconWidget::paintEvent(QPaintEvent *event)
{
QRect areatopaint = event->rect();
QPainter painter(this);
QBrush brush(Qt::black);
QPointF center = this->rect().center();
QPainterPath icon;
icon.addEllipse(center,20,20);
painter.drawPath(icon);
painter.fillPath(icon, brush);
if (pressed) {
brush.setColor(Qt::red);
}
}
void iconWidget::mousePressEvent(QMouseEvent *event)
{
pressed = true;
update();
iconWidget::mousePressEvent(event);
}
Run Code Online (Sandbox Code Playgroud)
.h文件:
#define ICONWIDGET_H
#include <QWidget>
#define ICON_WIDGET_WIDTH 45
#define ICON_WIDGET_HEIGHT 45
class iconWidget : public QWidget
{
Q_OBJECT
public:
explicit iconWidget(QWidget …Run Code Online (Sandbox Code Playgroud) 说我已经QWidget::keyPressEvent(QKeyEvent *e)在我的子类中重新实现了.
是否有必要在最后调用基类的实现?
例:
MyWidget::keyPressEvent(QKeyEvent *e)
{
// my event handler...
// now call parent event handler, necessary?
QWidget::keyPressEvent(e);
}
Run Code Online (Sandbox Code Playgroud)
如果是这样,有什么意义呢?
我有一个QTreeWidget带QTreeWidgetItem项目,但只有根节点显示其图标:

我一直在摸不着什么可以把它关掉,任何提示?
ui->folderTree1->setUpdatesEnabled( false );
QTreeWidgetItem* treeRoot1 = new QTreeWidgetItem(ui->folderTree1);
treeRoot1->setIcon(0, QIcon(":/icons/black.png"));
treeRoot1->setText(0, tr("Root"));
treeRoot1->setExpanded(true);
addFoldersToTreeView(treeRoot1, ui->filePath1->text(), ui->filePath2->text());
ui->folderTree1->setUpdatesEnabled( true );
}
void MainWindow::addFoldersToTreeView(QTreeWidgetItem* currentWidget, QString leftPath, QString rightPath)
{
qDebug() << "MainWindow::addFoldersToTreeView" << leftPath;
QDir dir(leftPath);
QDir dir2(rightPath);
/* Add the folders */
foreach (QString subDir, dir.entryList(QDir::Dirs | QDir::NoDotAndDotDot))
{
QString sImageName = ":/icons/black.png";
QTreeWidgetItem* newItem = new QTreeWidgetItem(currentWidget);
qDebug() << "MainWindow::addFoldersToTreeView.sImageName" << sImageName;
newItem->setIcon(0, QIcon(sImageName));
newItem->setText(0, subDir);
newItem->setExpanded(true);
newItem->setData(0, 1, QVariant(leftPath + QDir::separator() + …Run Code Online (Sandbox Code Playgroud) 是否可以在Visual Studio 2008 C++项目中为"自定义生成步骤"命令设置工作目录?
working-directory custom-build-step visual-studio-2008 visual-studio visual-c++
我想用Qt4库来实现这种效果:一个按钮组,它附加在它旁边的每个按钮。在Gtk3中,我仅将“链接”类应用于容器小部件。如何在Qt4中完成?

qt ×8
c++ ×5
qt4 ×4
qt5 ×3
qtabwidget ×3
button ×1
inheritance ×1
pyqt ×1
python ×1
qevent ×1
qslider ×1
qtabbar ×1
qtreewidget ×1
qwidget ×1
stylesheet ×1
visual-c++ ×1