QTableWidget每行中的一个单元格包含一个组合框
for (each row in table ... ) {
QComboBox* combo = new QComboBox();
table->setCellWidget(row,col,combo);
combo->setCurrentIndex(node.type());
connect(combo, SIGNAL(currentIndexChanged(int)),this, SLOT(changed(int)));
....
}
Run Code Online (Sandbox Code Playgroud)
在处理程序函数:: changed(int index)中我有
QComboBox* combo=(QComboBox*)table->cellWidget(_row,_col);
combo->currentIndex()
Run Code Online (Sandbox Code Playgroud)
要获取组合框的副本并获得新选择.
但我无法获得行/列.
当选择或更改嵌入项并且未设置currentRow()/ currentColumn()时,不会发出表cellXXXX信号.
我有一个简单的QComboBox小部件,里面有2个值:True和False.我有一个QString变量currValue,这是其中一个值.我想设置我的小部件的当前值currValue.
我认为解决方案如下:首先让我们初始化currValue;
QString currValue = "False";
QComboBox* combo = new QComboBox();
combo->addItem("True");
combo->addItem("False");
combo->setCurrentIndex(combo->findData(currValue));
Run Code Online (Sandbox Code Playgroud)
但它不起作用.难道我做错了什么 ?为什么QComboBox没有成员setCurrentItem()或smth那样?
我按照Qt提供的Spin Box Delegate教程,尝试实现自己的QItemDelegate.它将用于指定a QComboBox来表示QTableView单元格中的数据,但它不起作用.
我最大的问题是我不知道什么时候QItemDelegate会被利用.
何时itemModel->setData()使用或何时使用itemModel->setItem().我怀疑setItem()是因为我重新实现了QItemDelegate(强调"项目"),但教程使用setData()并且它工作正常.
我知道,如果指定QItemDelegate不起作用,它使用默认值,但我现在怎么说我指定的那个不起作用?
什么时候我应该怀疑QTableView使用我的代表.我想指定每个单元格使用哪些代理.这是可能的还是QTableView唯一使用一个代表?
如何将我指定的项目来填充QComboBox一旦获得通过所显示的QTableView?
我QItemDelegate在这里实现:
QComboBox位于mainwindow.cpp中的注释"Enabled"下面.qcomboboxitemdelegate.h
#ifndef QCOMBOBOXITEMDELEGATE_H
#define QCOMBOBOXITEMDELEGATE_H
#include <QItemDelegate>
#include <QComboBox>
class QComboBoxItemDelegate : public QItemDelegate
{
Q_OBJECT
public:
explicit QComboBoxItemDelegate(QObject *parent = 0);
QWidget* createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index);
void setEditorData(QWidget *editor, const QModelIndex &index);
void …Run Code Online (Sandbox Code Playgroud) 我无法弄清楚如何更改QComboBox的一个特定项目的文本颜色.我能够更改项目的背景颜色:
comboBox->setItemData(i, Qt::green, Qt::BackgroundRole);
Run Code Online (Sandbox Code Playgroud)
(Qt::ForegroundRole完全没有效果,Qt 4.6,Ubuntu 10.04)
我能够用样式表更改所有项目的文本颜色,但我无法弄清楚如何更改一个指定项目的文本颜色.
谢谢你的帮助!
我的QComboBox派生类位于(可见)屏幕底端的QGraphicsScene中 - 但它会向下弹出,因此不可见.
(如何)是否可以强制弹出窗口在窗口小部件上方打开?
我试过像这样重新实现showPopup:
void MyComboBox::showPopup()
{
QAbstractItemView *popupView = view();
popupView->move(0,-100);
//popupView->window->move(0,-100);
QComboBox::showPopup();
}
Run Code Online (Sandbox Code Playgroud)
结果是,内容似乎被移动,但不是基础弹出对象.我认为有可能找到一个如本文所示的样式解决方案 ,但我找不到任何可能对此有用的样式控件.我对C++和Qt都很陌生,所以我可能会遗漏一些明显的东西.
我对这件事情有任何帮助表示感谢!
最好的祝福,
塞巴斯蒂安
我想用工具提示显示文本和用户在列表视图中选择项目的时间(将鼠标悬停在列表视图中的项目上)QCombobox.
我使用的是定制的QComboBox带QItemDelegate.
我试图把QComboBox成QStandardItem在使用QStandardItemModel.我一直在四处寻找,我找不到答案,任何想法?
有没有办法可以增加QComboBox控件中列出的项目的高度?
我尝试按照QTDevNet论坛中的建议进行操作,但没有运气
QComboBox QAbstractItemView::item {margin-top: 3px;}
Run Code Online (Sandbox Code Playgroud)
我也试过这个,仍然没有结果.
QComboBox QAbstractItemView::item {min-height: 20px;}
Run Code Online (Sandbox Code Playgroud)
是否有可能在样式表层面实现这一目标?
在组合框的 Firefox/Chrome/InternetExplorer/Safari/Opera弹出窗口中展开内容,请参阅Firefox图片:

QComboBox弹出窗口不会扩展内容.弹出窗口的大小受限QComboBox,请参阅QWebView图片:

所以我实现了QComboBox :: showPopup:
void newQComboBox::showPopup() {
int width = this->width();
this->view()->setTextElideMode( Qt::ElideNone );
const int iconSize = this->iconSize().width();
const QFontMetrics fontMetrics = this->fontMetrics();
const int j = this->count();
for( int i=0; i < j; ++i ) {
const int textWidth = fontMetrics.width( this->itemText(i) + "WWW" );
if (this->itemIcon(i).isNull()) {
width = qMax(width, textWidth);
} else {
width = qMax(width, textWidth + iconSize);
}
}
QStyleOptionComboBox opt;
this->initStyleOption(&opt); …Run Code Online (Sandbox Code Playgroud) 我的ui上有一个QComboBox并按如下所示设置模型:
QStringListModel* model = new QStringListModel;
QStringList stringlist;
stringlist << "Test1" << "Test2" << "Test3";
model->setStringList(stringlist);
ui->comboBox->setModel(model);
Run Code Online (Sandbox Code Playgroud)
现在,我想将当前索引更改为none(以便获得一个空白的组合框)。
我已经尝试使用将当前索引设置为-1 ui->comboBox->setCurrentIndex(-1);,但结果是在qlist中超出范围表达式的索引:
ASSERT failure in QList<T>::operator[]: "index out of range", file F:/Qt/5.4/mingw491_32/include/QtCore/qlist.h, line 486
Run Code Online (Sandbox Code Playgroud) qcombobox ×10
qt ×10
c++ ×4
qt4 ×2
colors ×1
popup ×1
qtableview ×1
qtablewidget ×1
qtgui ×1
qtwebkit ×1
stylesheet ×1