<div dir="ltr"><div>If I understand this code correctly, it's putting the button inside the cell. Unfortunately, there isn't enough room to do that.</div><div>The table only shows the QLineEdits.  When you click in a cell to edit, the button appears next to it, over the neighboring cell(s).</div><div>However, maybe there is a container we can put the button into, that will act as a click barrier.  Something less extreme than a dialog.<br></div><div>Casey McD<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Jun 11, 2021 at 10:05 AM Volker Hilsheimer <<a href="mailto:volker.hilsheimer@qt.io">volker.hilsheimer@qt.io</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">> On 11 Jun 2021, at 13:52, Turtle Creek Software <<a href="mailto:support@turtlesoft.com" target="_blank">support@turtlesoft.com</a>> wrote:<br>
> <br>
> Here's more info on the weird QTableWidget problem we're seeing.<br>
> <br>
> One of our data entry fields uses combination of widgets:  a QLineEdit subclass with a linked QToolButton subclass next to it, and a QListWidget subclass that drops down underneath.  It acts kinda like a combo box, but better for really long lists. The whole assembly works properly in regular data entry screens.  Clicking on button or list changes values in the line edit field.<br>
> <br>
> We use setCellWidget to put the same QLineEdit subclass into a QTableWidget cell. The button and list appear properly, but the button does not catch mouse clicks.  They go to the cell behind the button instead.<br>
> <br>
> We use signals/slots to connect the clicked signal, but don't fiddle with events otherwise. <br>
> <br>
> Casey McD<br>
<br>
<br>
This works fine:<br>
<br>
#include <QtWidgets><br>
<br>
class CellWidget : public QWidget<br>
{<br>
public:<br>
    CellWidget()<br>
    {<br>
        QLineEdit *le = new QLineEdit;<br>
        QToolButton *tb = new QToolButton;<br>
        QMenu *toolMenu = new QMenu;<br>
        toolMenu->addAction(new QAction("Action 1", this));<br>
        toolMenu->addAction(new QAction("Action 2", this));<br>
        toolMenu->addAction(new QAction("Action 3", this));<br>
        tb->setPopupMode(QToolButton::InstantPopup);<br>
        tb->setMenu(toolMenu);<br>
<br>
        QHBoxLayout *hbox = new QHBoxLayout;<br>
        hbox->addWidget(le);<br>
        hbox->addWidget(tb);<br>
        setContentsMargins(0, 0, 0, 0);<br>
        hbox->setContentsMargins(0, 0, 0, 0);<br>
<br>
        setLayout(hbox);<br>
    }<br>
<br>
    QSize minimumSizeHint() const { return QSize(100, 100); }<br>
};<br>
<br>
int main(int argc, char **argv)<br>
{<br>
    QApplication app(argc, argv);<br>
<br>
    QTableWidget table(10, 10);<br>
    table.setCellWidget(5, 5, new CellWidget);<br>
<br>
    table.show();<br>
<br>
    return app.exec();<br>
}<br>
<br>
<br>
Volker<br>
<br>
</blockquote></div>